Payabli Bill API
The Bill API from Payabli — 7 operation(s) for bill.
The Bill API from Payabli — 7 operation(s) for bill.
openapi: 3.1.0
info:
title: API reference Bill 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: Bill
paths:
/Bill/single/{entry}:
post:
operationId: AddBill
summary: Add bill
description: Creates a bill in an entrypoint.
tags:
- Bill
parameters:
- name: entry
in: path
description: The paypoint's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry)
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
- name: idempotencyKey
in: header
description: _Optional but recommended_ A unique ID that you can include to prevent duplicating objects or transactions in the case that a request is sent more than once. This key isn't generated in Payabli, you must generate it yourself. This key persists for 2 minutes. After 2 minutes, you can reuse the key if needed.
required: false
schema:
$ref: '#/components/schemas/IdempotencyKey'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BillResponse'
'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/BillOutData'
/Bill/{idBill}:
get:
operationId: GetBill
summary: Get bill
description: Retrieves a bill by ID from an entrypoint.
tags:
- Bill
parameters:
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
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/GetBillResponse'
'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'
put:
operationId: EditBill
summary: Update bill
description: Updates a bill by ID.
tags:
- Bill
parameters:
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
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/EditBillResponse'
'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/BillOutData'
delete:
operationId: DeleteBill
summary: Delete bill
description: Deletes a bill by ID.
tags:
- Bill
parameters:
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
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/BillResponse'
'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'
/Query/bills/{entry}:
get:
operationId: ListBills
summary: Get list of bills for entrypoint
description: Retrieve a list of bills for an entrypoint. Use filters to limit results. Include the `exportFormat` query parameter to return the results as a file instead of a JSON response.
tags:
- Bill
parameters:
- name: entry
in: path
description: The paypoint's entrypoint identifier. [Learn more](/developers/api-reference/api-overview#entrypoint-vs-entry)
required: true
schema:
type: string
- name: exportFormat
in: query
description: Export format for file downloads. When specified, returns data as a file instead of JSON.
required: false
schema:
$ref: '#/components/schemas/ExportFormat'
- name: fromRecord
in: query
description: The number of records to skip before starting to collect the result set.
required: false
schema:
type: integer
default: 0
- name: limitRecord
in: query
description: Max number of records to return for the query. Use `0` or negative value to return all records.
required: false
schema:
type: integer
default: 20
- name: parameters
in: query
description: "Collection of field names, conditions, and values used to filter the query\n<Info>\n **You must remove `parameters=` from the request before you send it, otherwise Payabli will ignore the filters.**\n\n Because of a technical limitation, you can't make a request that includes filters from the API console on this page. The response isn't filtered. Instead, copy the request, remove `parameters=` and run the request in a different client.\n\n For example:\n\n --url https://api-sandbox.payabli.com/api/Query/transactions/org/236?parameters=totalAmount(gt)=1000&limitRecord=20\n\n should become:\n\n --url https://api-sandbox.payabli.com/api/Query/transactions/org/236?totalAmount(gt)=1000&limitRecord=20\n</Info>\nSee [Filters and Conditions Reference](/developers/developer-guides/pay-ops-reporting-engine-overview#filters-and-conditions-reference) for help.\n\nList of field names accepted:\n- `frequency` (`in`, `nin`, `ne`, `eq`)\n- `method` (`in`, `nin`, `eq`, `ne`)\n- `event` (`in`, `nin`, `eq`, `ne`)\n- `target` (`ct`, `nct`, `eq`, `ne`)\n- `status` (`eq`, `ne`)\n- `approvalUserId` (`eq`, `ne`)\n- `parentOrgId` (`ne`, `eq`, `nin`, `in`)\n- `approvalUserEmail` (`eq`, `ne`)\n- `scheduleId` (`ne`, `eq`)\n\nList of comparison accepted - enclosed between parentheses:\n- `eq` or empty => equal\n- `gt` => greater than\n- `ge` => greater or equal\n- `lt` => less than\n- `le` => less or equal\n- `ne` => not equal\n- `ct` => contains\n- `nct` => not contains\n- `in` => inside array\n- `nin` => not inside array\n\nList of parameters accepted:\n- `limitRecord` : max number of records for query (default=\"20\", \"0\" or negative value for all)\n- `fromRecord` : initial record in query\nExample: `totalAmount(gt)=20` returns all records with a `totalAmount` that's greater than 20.00"
required: false
schema:
type: object
additionalProperties:
type:
- string
- 'null'
- name: sortBy
in: query
description: The field name to use for sorting results. Use `desc(field_name)` to sort descending by `field_name`, and use `asc(field_name)` to sort ascending by `field_name`.
required: false
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/BillQueryResponse'
'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'
/Query/bills/org/{orgId}:
get:
operationId: ListBillsOrg
summary: Get list of bills for organization
description: Retrieve a list of bills for an organization. Use filters to limit results. Include the `exportFormat` query parameter to return the results as a file instead of a JSON response.
tags:
- Bill
parameters:
- name: orgId
in: path
description: The numeric identifier for organization, assigned by Payabli.
required: true
schema:
type: integer
- name: exportFormat
in: query
description: Export format for file downloads. When specified, returns data as a file instead of JSON.
required: false
schema:
$ref: '#/components/schemas/ExportFormat'
- name: fromRecord
in: query
description: The number of records to skip before starting to collect the result set.
required: false
schema:
type: integer
default: 0
- name: limitRecord
in: query
description: Max number of records to return for the query. Use `0` or negative value to return all records.
required: false
schema:
type: integer
default: 20
- name: parameters
in: query
description: "Collection of field names, conditions, and values used to filter the query\n<Info>\n **You must remove `parameters=` from the request before you send it, otherwise Payabli will ignore the filters.**\n\n Because of a technical limitation, you can't make a request that includes filters from the API console on this page. The response isn't filtered. Instead, copy the request, remove `parameters=` and run the request in a different client.\n\n For example:\n\n --url https://api-sandbox.payabli.com/api/Query/transactions/org/236?parameters=totalAmount(gt)=1000&limitRecord=20\n\n should become:\n\n --url https://api-sandbox.payabli.com/api/Query/transactions/org/236?totalAmount(gt)=1000&limitRecord=20\n</Info>\nSee [Filters and Conditions Reference](/developers/developer-guides/pay-ops-reporting-engine-overview#filters-and-conditions-reference) for help.\n\nList of field names accepted:\n- `frequency` (in, nin, ne, eq)\n- `method` (in, nin, eq, ne)\n- `event` (in, nin, eq, ne)\n- `target` (ct, nct, eq, ne)\n- `status` (eq, ne)\n- `parentOrgId` (ne, eq, nin, in)\n- `approvalUserId` (eq, ne)\n- `approvalUserEmail` (eq, ne)\n\nList of comparison accepted - enclosed between parentheses:\n- eq or empty => equal\n- gt => greater than\n- ge => greater or equal\n- lt => less than\n- le => less or equal\n- ne => not equal\n- ct => contains\n- nct => not contains\n- in => inside array\n- nin => not inside array\n\nList of parameters accepted:\n- limitRecord : max number of records for query (default=\"20\", \"0\" or negative value for all)\n- fromRecord : initial record in query\n\nExample: totalAmount(gt)=20 return all records with totalAmount greater than 20.00"
required: false
schema:
type: object
additionalProperties:
type:
- string
- 'null'
- name: sortBy
in: query
description: The field name to use for sorting results. Use `desc(field_name)` to sort descending by `field_name`, and use `asc(field_name)` to sort ascending by `field_name`.
required: false
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/BillQueryResponse'
'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'
/Bill/attachedFileFromBill/{idBill}/{filename}:
delete:
operationId: deleteAttachedFromBill
summary: Delete attached file from bill
description: Delete a file attached to a bill.
tags:
- Bill
parameters:
- name: filename
in: path
description: 'The filename in Payabli. Get this from the `zipName` field
in the `DocumentsRef.filelist` array returned by
`/api/Bill/{idBill}`. Example: `0_Bill.pdf`.'
required: true
schema:
type: string
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
required: true
schema:
type: integer
- name: returnObject
in: query
description: When `true`, the response includes the full bill object.
required: false
schema:
type: boolean
default: false
- 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/BillResponse'
'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'
get:
operationId: getAttachedFromBill
summary: Get attached file from bill
description: Retrieves a file attached to a bill, either as a binary file or as a Base64-encoded string.
tags:
- Bill
parameters:
- name: filename
in: path
description: 'The filename in Payabli. Get this from the `zipName` field
in the `DocumentsRef.filelist` array returned by
`/api/Bill/{idBill}`. Example: `0_Bill.pdf`.'
required: true
schema:
type: string
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
required: true
schema:
type: integer
- name: returnObject
in: query
description: When `true`, the request returns the file content as a Base64-encoded string.
required: false
schema:
type: boolean
default: false
- 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: A successful response returns a binary file when `returnObject` is `false`. When `returnObject` is `true`, the response contains the file content as a Base64-encoded string in an object. Due to technical limitations, only the object response is documented here.
content:
application/json:
schema:
$ref: '#/components/schemas/FileContent'
'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'
/Bill/approval/{idBill}:
post:
operationId: SendToApprovalBill
summary: Send a bill to approval
description: Send a bill to a user or list of users to approve.
tags:
- Bill
parameters:
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
required: true
schema:
type: integer
- name: autocreateUser
in: query
description: Automatically create the target user for approval if they don't exist.
required: false
schema:
type: boolean
default: false
- 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
- name: idempotencyKey
in: header
description: _Optional but recommended_ A unique ID that you can include to prevent duplicating objects or transactions in the case that a request is sent more than once. This key isn't generated in Payabli, you must generate it yourself. This key persists for 2 minutes. After 2 minutes, you can reuse the key if needed.
required: false
schema:
$ref: '#/components/schemas/IdempotencyKey'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/BillResponse'
'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:
type: array
items:
type: string
put:
operationId: ModifyApprovalBill
summary: Change bill approvers
description: Modify the list of users the bill is sent to for approval.
tags:
- Bill
parameters:
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
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/ModifyApprovalBillResponse'
'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:
type: array
items:
type: string
/Bill/approval/{idBill}/{approved}:
get:
operationId: SetApprovedBill
summary: Approve or disapprove a bill
description: Approve or disapprove a bill by ID.
tags:
- Bill
parameters:
- name: approved
in: path
description: 'String representing the approved status. Accepted values: ''true'' or ''false''.'
required: true
schema:
type: string
- name: idBill
in: path
description: Payabli ID for the bill. Get this ID by querying `/api/Query/bills/` for the entrypoint or the organization.
required: true
schema:
type: integer
- name: email
in: query
description: Email or username of user modifying approval status.
required: false
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/SetApprovedBillResponse'
'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'
components:
schemas:
RiskReason:
type: string
description: Reason for risk flagging.
title: RiskReason
IsSameDayACH:
type: boolean
description: 'When `true`, this is a same-day ACH transaction.
'
title: IsSameDayACH
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
BillQueryRecord2BillApprovalsItem:
type: object
properties:
approved:
type: integer
description: Indicates whether the bill has been approved. `0` is false, and `1` is true.
approvedTime:
type:
- string
- 'null'
format: date-time
description: Timestamp of when the approval was made, in UTC.
comments:
type: string
description: Additional comments on the approval.
email:
$ref: '#/components/schemas/Email'
description: The approving user's email address.
Id:
type: integer
format: int64
description: The approving user's ID.
required:
- approvedTime
title: BillQueryRecord2BillApprovalsItem
SettlementStatusPayout:
type: string
description: 'The settlement status of the payout transaction. See
[Payout Transaction Statuses](/guides/pay-out-status-reference#payout-transaction-statuses)
for a full reference.
'
title: SettlementStatusPayout
Maskedaccount:
type: string
description: 'Masked card or bank account used in transaction. In the case of Apple
Pay, this is a masked DPAN (device primary account number).
'
title: Maskedaccount
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
RiskFlaggedOn:
type: string
format: date-time
description: Timestamp when the transaction was flagged for risk.
title: RiskFlaggedOn
VendorOutData:
type: object
properties:
additionalData:
$ref: '#/components/schemas/AdditionalData'
Address1:
$ref: '#/components/schemas/AddressNullable'
description: Vendor's street address. 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.
BillingData:
$ref: '#/components/schemas/BillingData'
description: Object containing vendor's bank information.
City:
type: string
description: Vendor's city.
Contacts:
$ref: '#/components/schemas/ContactsField'
description: Array of objects describing the vendor's contacts.
Country:
type: string
description: Vendor's country. `US` or `CA`.
customerVendorAccount:
type: string
description: Account number of paypoint in the vendor side.
EIN:
type: string
description: 'EIN/Tax ID for vendor. Must be nine digits formatted as `XX-XXXXXXX`. In responses, this field is masked and looks like: `XXXXX6789`.'
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:
type: string
description: Primary name for vendor. Required for new vendor. Allowed characters are letters, numbers, spaces, and `. , ' & ( )
Name2:
type: string
description: Secondary nam
# --- truncated at 32 KB (110 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/payabli/refs/heads/main/openapi/payabli-bill-api-openapi.yml