BitPay Bills API
Manage payment requests sent to specific buyers with fixed-price line items.
Manage payment requests sent to specific buyers with fixed-price line items.
openapi: 3.1.0
info:
title: BitPay Bills API
description: 'BitPay is a cryptocurrency payment processing platform offering REST APIs for accepting Bitcoin and altcoin payments, creating invoices, managing refunds, processing payouts, and accessing settlement and ledger data. BitPay handles cryptocurrency conversion and fiat settlement to bank accounts and crypto wallets.
'
version: 2.0.0
contact:
name: BitPay Support
url: https://support.bitpay.com/hc/en-us
termsOfService: https://www.bitpay.com/legal/terms-of-use
servers:
- url: https://bitpay.com
description: Production server
- url: https://test.bitpay.com
description: Test server
tags:
- name: Bills
description: Manage payment requests sent to specific buyers with fixed-price line items.
paths:
/bills:
post:
operationId: createBill
summary: Create a Bill
description: 'Create a payment request sent to a specific buyer with fixed-price line items typically denominated in fiat currency. Supports email billing and recurring payment scheduling via subscriptions.
'
tags:
- Bills
parameters:
- name: X-Accept-Version
in: header
required: true
schema:
type: string
enum:
- 2.0.0
- name: X-Identity
in: header
schema:
type: string
- name: X-Signature
in: header
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBillRequest'
example:
token: your-api-token
currency: USD
name: John Doe
email: john@example.com
dueDate: '2026-07-01T00:00:00Z'
items:
- description: Consulting services
price: 150.0
quantity: 2
responses:
'200':
description: Bill created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
operationId: listBills
summary: List Bills
description: Retrieve a list of bills, optionally filtered by status.
tags:
- Bills
parameters:
- name: token
in: query
required: true
schema:
type: string
description: API token for authentication.
- name: status
in: query
schema:
type: string
enum:
- draft
- sent
- new
- paid
- acknowledged
- refunded
- cancelled
- unpaid
- sentAndPaid
description: Filter by bill status.
- name: X-Accept-Version
in: header
required: true
schema:
type: string
enum:
- 2.0.0
- name: X-Identity
in: header
schema:
type: string
- name: X-Signature
in: header
schema:
type: string
responses:
'200':
description: List of bills
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Bill'
/bills/{billId}:
get:
operationId: getBill
summary: Retrieve a Bill
description: Retrieve a specific bill by its ID.
tags:
- Bills
parameters:
- name: billId
in: path
required: true
schema:
type: string
description: ID of the bill to retrieve.
- name: token
in: query
required: true
schema:
type: string
- name: X-Accept-Version
in: header
required: true
schema:
type: string
enum:
- 2.0.0
- name: X-Identity
in: header
schema:
type: string
- name: X-Signature
in: header
schema:
type: string
responses:
'200':
description: Bill details
content:
application/json:
schema:
$ref: '#/components/schemas/BillResponse'
'404':
description: Bill not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
put:
operationId: updateBill
summary: Update a Bill
description: Update an existing bill. Bills can be updated only if they have not been paid.
tags:
- Bills
parameters:
- name: billId
in: path
required: true
schema:
type: string
- name: X-Accept-Version
in: header
required: true
schema:
type: string
enum:
- 2.0.0
- name: X-Identity
in: header
schema:
type: string
- name: X-Signature
in: header
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBillRequest'
responses:
'200':
description: Bill updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BillResponse'
/bills/{billId}/deliveries:
post:
operationId: deliverBill
summary: Deliver a Bill
description: Trigger email delivery of a bill to the recipient.
tags:
- Bills
parameters:
- name: billId
in: path
required: true
schema:
type: string
- name: X-Accept-Version
in: header
required: true
schema:
type: string
enum:
- 2.0.0
- name: X-Identity
in: header
schema:
type: string
- name: X-Signature
in: header
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- token
properties:
token:
type: string
description: API token for authentication.
responses:
'200':
description: Bill delivered successfully
content:
application/json:
schema:
type: object
properties:
data:
type: string
example: success
components:
schemas:
BillItem:
type: object
required:
- price
- quantity
properties:
description:
type: string
description: Description of the line item.
price:
type: number
description: Unit price of the item.
quantity:
type: integer
description: Quantity of the item.
ErrorResponse:
type: object
properties:
status:
type: string
example: error
error:
type: string
description: Error code or type.
message:
type: string
description: Human-readable error message.
code:
type: integer
description: Numeric error code.
BillResponse:
type: object
properties:
data:
$ref: '#/components/schemas/Bill'
Bill:
type: object
properties:
id:
type: string
description: BitPay bill ID.
status:
type: string
enum:
- draft
- sent
- new
- paid
- acknowledged
- refunded
- cancelled
- unpaid
- sentAndPaid
url:
type: string
format: uri
number:
type: string
currency:
type: string
name:
type: string
email:
type: string
dueDate:
type: string
format: date-time
items:
type: array
items:
$ref: '#/components/schemas/BillItem'
token:
type: string
merchant:
type: string
CreateBillRequest:
type: object
required:
- token
- currency
- items
properties:
token:
type: string
description: API token from the BitPay dashboard.
number:
type: string
description: Bill identifier specified by the merchant.
currency:
type: string
description: ISO 4217 3-character currency code.
name:
type: string
description: Bill recipient's name.
address1:
type: string
description: Bill recipient's street address.
address2:
type: string
description: Additional address line.
city:
type: string
description: Bill recipient's city.
state:
type: string
description: Bill recipient's state or province.
zip:
type: string
description: Bill recipient's ZIP or postal code.
country:
type: string
description: Bill recipient's country.
email:
type: string
format: email
description: Bill recipient's email address.
cc:
type: array
items:
type: string
format: email
description: Email addresses to CC on the bill.
phone:
type: string
description: Bill recipient's phone number.
dueDate:
type: string
format: date-time
description: Date and time at which the bill is due (ISO-8601).
passProcessingFee:
type: boolean
description: If true, BitPay's processing fee will be included in the bill.
items:
type: array
description: List of line items on the bill.
items:
$ref: '#/components/schemas/BillItem'