Payabli Bill API
The Bill API from Payabli — 7 operation(s) for bill.
The Bill API from Payabli — 7 operation(s) for bill.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/payabli-bill-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: 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:
Billitems:
type: array
items:
$ref: '#/components/schemas/BillItem'
description: Array of `LineItems` contained in bill.
title: Billitems
ItemDescription:
type: string
description: Item or product description. Max length of 250 characters.
title: ItemDescription
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
SplitFundingContent:
type: object
properties:
accountId:
type: string
description: The accountId for the account the split should be sent to.
amount:
type: number
format: double
description: Amount from the transaction to send to this recipient.
description:
type: string
description: A description for the split.
recipientEntryPoint:
type: string
description: The entrypoint the split should be sent to.
title: SplitFundingContent
RiskReason:
type: string
description: Reason for risk flagging.
title: RiskReason
ExternalPaypointId:
type: string
description: 'A custom identifier for the paypoint, if applicable.
'
title: ExternalPaypointId
BillPayOutData:
type: object
properties:
billId:
type: integer
format: int64
description: Bill ID in Payabli.
LotNumber:
type:
- string
- 'null'
description: Lot number associated with the bill.
AccountingField1:
$ref: '#/components/schemas/AccountingField'
AccountingField2:
$ref: '#/components/schemas/AccountingField'
Terms:
$ref: '#/components/schemas/Terms'
description: Description of payment terms.
AdditionalData:
$ref: '#/components/schemas/AdditionalDataString'
attachments:
$ref: '#/components/schemas/Attachments'
description: Bill image attachment. Send the bill image as Base64-encoded string, or as a publicly accessible link. For full details on using this field with a payout authorization, see [the documentation](/developers/developer-guides/pay-out-manage-payouts).
invoiceNumber:
$ref: '#/components/schemas/InvoiceNumber'
description: Custom number identifying the bill. Must be unique in paypoint. **Required** for new bill and when `billId` isn't provided.
netAmount:
$ref: '#/components/schemas/NetAmountstring'
description: Net Amount owed in bill. Required when adding a bill.
invoiceDate:
type:
- string
- 'null'
format: date
description: Bill date in format YYYY-MM-DD or MM/DD/YYYY.
dueDate:
type:
- string
- 'null'
format: date
description: Bill due date in format YYYY-MM-DD or MM/DD/YYYY.
comments:
$ref: '#/components/schemas/Comments'
description: Any comments about bill. **For managed payouts, this field has a limit of 100 characters**.
identifier:
type:
- string
- 'null'
description: Custom identifier for the bill.
discount:
type: string
description: Bill discount amount.
totalAmount:
type:
- string
- 'null'
description: Total amount of the bill.
required:
- invoiceDate
- dueDate
title: BillPayOutData
Totalrecords:
type: integer
description: Total number of records in response.
title: Totalrecords
Dbaname:
# --- 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