API Docs
/
No Results Found
Bills

Bills

When your vendor supplies goods/services to you on credit, you’re sent an invoice that details the amount of money you owe him. You can record this as a bill in Zoho Books and track it until it’s paid.

Download Bills OpenAPI Document

Attribute

bill_id
string
ID of the Bill
purchaseorder_ids
array
Array of purchase order identifiers linked to this bill for tracking purposes.
vendor_id
string
Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.
vendor_name
string
Name of the Vendor
vat_treatment
string
🇬🇧 United Kingdom
only
(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
vat_reg_no
string
🇬🇧 United Kingdom
, Avalara Integration only
For UK Edition: VAT Registration number of a contact with Length should be between 2 and 12 characters.
For Avalara: If you are doing sales in the European Union (EU) then provide VAT Registration Number of your customers here. This is used to calculate VAT for B2B sales, from Avalara.
source_of_supply
string
🇮🇳 India
only
State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
destination_of_supply
string
🇮🇳 India
only
State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
permit_number
string
🇦🇪 United Arab Emirates
only
The permit number for the bill.
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
gst_treatment
string
🇮🇳 India
only
Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
is_pre_gst
boolean
🇮🇳 India
only
Applicable for transactions that fall before july 1, 2017
pricebook_id
string
Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.
pricebook_name
string
Name of the price book
is_reverse_charge_applied
boolean
🇮🇳 India
only
Applicable for transactions where you pay reverse charge
unused_credits_payable_amount
integer
Unused Credits for this Vendor
status
string
Status of the Bill
bill_number
string
Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.
date
string
Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.
due_date
string
Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.
payment_terms
integer
Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.
payment_terms_label
string
Label of the Payment Terms
payment_expected_date
string
Expected Payment date of the Bill
reference_number
string
External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.
recurring_bill_id
string
Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.
due_by_days
string
Days by which Bill is Due
due_in_days
integer
Days in which Bill will be Due
currency_id
string
Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.
currency_code
string
Code of the Currency
currency_symbol
string
Symbol of the Currency
documents
array
Show Sub-Attributes arrow
document_id
long
ID of the Document
file_name
string
Name of the file
price_precision
integer
Precision for the values
exchange_rate
double
Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.
adjustment
double
Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.
adjustment_description
string
Text description explaining the reason for bill adjustment. Examples: "Early payment discount", "Volume discount", "Rounding adjustment", "Handling fee". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.
custom_fields
array
Show Sub-Attributes arrow
custom_field_id
long
index
integer
Index of the custom field
label
string
Label of the Custom Field
value
string
Value of the Custom Field
is_tds_applied
boolean
🇮🇳 India
, 🌎 Global
, 🇦🇺 Australia
only
Check if TDS is applied
is_item_level_tax_calc
boolean
Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.
is_inclusive_tax
boolean
Not applicable 🇺🇸 United States
Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.
filed_in_vat_return_id
string
🇬🇧 United Kingdom
only
ID of the VAT Return the Vendor Credit is filed in
filed_in_vat_return_name
string
🇬🇧 United Kingdom
only
Name of the VAT Return the Vendor Credit is filed in
filed_in_vat_return_type
string
🇬🇧 United Kingdom
only
Type of the VAT Return the Vendor Credit is filed in
is_abn_quoted
string
🇦🇺 Australia
only
line_items
array
Individual items, services, or expenses included in the bill. Each line item represents a specific product, service, or expense with its own quantity, rate, and tax calculations. Required for detailed billing, inventory tracking, and expense categorization.
Show Sub-Attributes arrow
purchaseorder_item_id
string
Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.
line_item_id
string
Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.
item_id
string
Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.
sku
string
Stock Keeping Unit identifier for the item. Used for inventory management, product identification, and vendor communications. Auto-populated when item_id is specified. Helps track specific product variants and manage stock levels.
name
string
Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.
account_id
string
Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.
account_name
string
Name of the Account
image_document_id
string
🇮🇳 India
only
ID of the image document
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
location_name
string
Name of the location
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Reverse charge tax ID
reverse_charge_tax_name
string
🇮🇳 India
only
Name of the reverse charge tax
reverse_charge_tax_percentage
double
🇮🇳 India
only
Enter reverse charge percentage
reverse_charge_tax_amount
double
🇮🇳 India
only
Enter reverse charge amount
description
string
Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.
bcy_rate
integer
Rate in Base Currency of the Organization
rate
double
Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.
tags
array
Show Sub-Attributes arrow
tag_id
long
ID of the Tag
tag_option_id
long
Id of the Tag Option
quantity
double
Number of units for the line item. Used to calculate line item totals (quantity × rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tds_tax_id
string
🇲🇽 Mexico
only
TDS ID of the tax or tax group applied to the line item
tax_treatment_code
string
GCC only
Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.
tax_exemption_id
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
only
ID of the Tax Exemption Applied
tax_exemption_code
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
, 🇲🇽 Mexico
only
Code of the Tax Exemption Applied
tax_name
string
Name of the Tax
tax_type
string
Type of tax
tax_percentage
integer
Percentage of Tax
item_total
integer
Calculated total for the line item (quantity × rate + taxes - discounts). Auto-calculated based on line item details. Used for bill totals, financial reporting, and payment processing. Cannot be manually edited.
item_total_inclusive_of_tax
double
Total of the Item Inclusive of Tax
item_order
integer
unit
string
Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.
product_type
string
Europe , 🇬🇧 United Kingdom
only
Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.
hsn_or_sac
string
🇮🇳 India
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
Add HSN/SAC code for your goods/services
acquisition_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.
acquisition_vat_name
string
🇬🇧 United Kingdom
, Europe only
Name of the VAT Acquistion
acquisition_vat_percentage
string
🇬🇧 United Kingdom
, Europe only
Percentage of the VAT Acquistion
acquisition_vat_amount
string
🇬🇧 United Kingdom
, Europe only
Amount of the VAT Acquistion
reverse_charge_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.
reverse_charge_vat_name
string
🇬🇧 United Kingdom
, Europe only
Name of the Reverse Charge
reverse_charge_vat_percentage
string
🇬🇧 United Kingdom
, Europe only
Percentage of the Reverse Charge
reverse_charge_vat_amount
string
🇬🇧 United Kingdom
, Europe only
Percentage of the Reverse Charge
is_billable
boolean
Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.
customer_id
string
ID of the Customer
customer_name
string
Name of the Customer
project_id
string
ID of the Project
project_name
string
Name of the Project
invoice_id
string
ID of the Invoice
invoice_number
string
Number associated with the Invoice
item_custom_fields
array
Show Sub-Attributes arrow
custom_field_id
long
index
integer
Index of the custom field
value
string
Value of the Custom Field
label
string
Label of the Custom Field
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
location_name
string
Name of the location
sub_total
integer
Sub Total of the Bill
tax_total
integer
Tax Total of the Bill
total
integer
Total of the Bill
payment_made
integer
Amount of Payment made
vendor_credits_applied
integer
Amount of credits applied
is_line_item_invoiced
boolean
Check if line item is invoiced
purchaseorders
array
Show Sub-Attributes arrow
purchaseorder_id
string
ID of the Purchase Order
purchaseorder_number
string
Number of the Purchase Order
purchaseorder_date
string
Date of the Purchase Order
purchaseorder_status
string
Status of the Purchase Order
taxes
array
Show Sub-Attributes arrow
tax_name
string
Name of the Tax
tax_amount
string
Amount of Tax in the Bill
acquisition_vat_summary
array
🇬🇧 United Kingdom
, Europe only
Summary of the VAT Acquistion
Show Sub-Attributes arrow
tax_name
string
Name of the Tax
tax_amount
string
Amount of Tax in the Bill
acquisition_vat_total
double
🇬🇧 United Kingdom
, Europe only
Total of the VAT Acquistion
reverse_charge_vat_summary
array
🇬🇧 United Kingdom
, Europe only
Summary of the Reverse Charge
Show Sub-Attributes arrow
tax_name
string
Name of the Tax
tax_amount
string
Amount of Tax in the Bill
reverse_charge_vat_total
double
🇬🇧 United Kingdom
, Europe only
Total of the Reverse Charge
balance
integer
Balance in the Bill
billing_address
object
Show Sub-Attributes arrow
address
string
Address involved in the Bill
street2
string
Address details
city
string
City in the Address
state
string
State involved in the Address
zip
string
ZIP Code involved in the Address
country
string
Country Involved in the Address
fax
string
Fax of the Vendor
attention
string
payments
array
Show Sub-Attributes arrow
payment_id
string
ID of the Payment
bill_id
string
ID of the Bill
bill_payment_id
string
ID of the Bill Payment
payment_mode
string
Mode of Payment
payment_number
string
Number of the Payment Made
description
string
Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.
date
string
Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.
reference_number
string
External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.
exchange_rate
double
Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.
amount
double
paid_through_account_id
string
ID of the Account through which Bill is Paid
paid_through_account_name
string
Name of the Account through which Bill is Paid
is_single_bill_payment
boolean
Check if it is a Single Bill Payment
is_paid_via_print_check
boolean
🇺🇸 United States
, 🇨🇦 Canada
only
Check if the Bill Payment is paid Via Print Check Option
check_details
array
🇺🇸 United States
, 🇨🇦 Canada
only
Show Sub-Attributes arrow
check_status
string
🇺🇸 United States
, 🇨🇦 Canada
only
Status of the Check
check_number
string
🇺🇸 United States
, 🇨🇦 Canada
only
Check Number that is printed
is_ach_payment
boolean
Check If Vendor Payment ACH
ach_payment_status
string
Status of the ACH Payment
ach_gw_transaction_id
string
ID of the ACH Payment Transaction
filed_in_vat_return_id
string
🇬🇧 United Kingdom
only
ID of the VAT Return the Vendor Credit is filed in
filed_in_vat_return_name
string
🇬🇧 United Kingdom
only
Name of the VAT Return the Vendor Credit is filed in
filed_in_vat_return_type
string
🇬🇧 United Kingdom
only
Type of the VAT Return the Vendor Credit is filed in
vendor_credits
array
Show Sub-Attributes arrow
vendor_credit_id
string
ID of the Vendor Credit
vendor_credit_bill_id
string
ID of the Bill Credited using the Vendor Credit
vendor_credit_number
string
Number of the Vendor Credit
date
string
Date Vendor Credit was applied
amount
double
Amount of Credit applied to the Bill
created_time
string
Created time of the bill
created_by_id
string
Name of User who created the Bill
last_modified_time
string
Last Modified Time of the Bill
reference_id
string
notes
string
Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.
terms
string
Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.
attachment_name
string
Name of the Attachment
open_purchaseorders_count
integer
Number of Open Purchase Orders

Example

{ "bill_id": "460000000098765", "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "vendor_id": "460000000038029", "vendor_name": "string", "vat_treatment": "string", "vat_reg_no": "string", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "is_pre_gst": false, "pricebook_id": 460000000038090, "pricebook_name": "string", "is_reverse_charge_applied": true, "unused_credits_payable_amount": 187, "status": "open", "bill_number": "00454", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "payment_expected_date": "string", "reference_number": "4321133", "recurring_bill_id": "string", "due_by_days": "string", "due_in_days": 0, "currency_id": "460000000000099", "currency_code": "INR", "currency_symbol": "string", "documents": [ { "document_id": 0, "file_name": "string" } ], "price_precision": 2, "exchange_rate": 1.23, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ], "is_tds_applied": true, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string", "is_abn_quoted": "string", "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "sku": "string", "name": "string", "account_id": "460000000000403", "account_name": "Other Expenses", "image_document_id": 460000000038067, "location_id": "460000000038080", "location_name": "string", "reverse_charge_tax_id": 460000000038056, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 100, "description": "string", "bcy_rate": 40, "rate": 10, "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "tax_name": "VAT (12.5%)", "tax_type": "tax", "tax_percentage": 0, "item_total": 40, "item_total_inclusive_of_tax": 40, "item_order": 1, "unit": "kgs", "product_type": "string", "hsn_or_sac": 80540, "acquisition_vat_id": "string", "acquisition_vat_name": "string", "acquisition_vat_percentage": "string", "acquisition_vat_amount": "string", "reverse_charge_vat_id": "string", "reverse_charge_vat_name": "string", "reverse_charge_vat_percentage": "string", "reverse_charge_vat_amount": "string", "is_billable": false, "customer_id": "string", "customer_name": "string", "project_id": "string", "project_name": "string", "invoice_id": "string", "invoice_number": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ] } ], "location_id": "460000000038080", "location_name": "string", "sub_total": 40, "tax_total": 0, "total": 40, "payment_made": 0, "vendor_credits_applied": 0, "is_line_item_invoiced": false, "purchaseorders": [ { "purchaseorder_id": "460000000068231", "purchaseorder_number": "PO-0001", "purchaseorder_date": "19 Jan 2017", "purchaseorder_status": "billed" } ], "taxes": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_total": 0.1, "reverse_charge_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "reverse_charge_vat_total": 0.1, "balance": 40, "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" }, "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "payment_mode": "Cash", "payment_number": "string", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through_account_id": "460000000000358", "paid_through_account_name": "Undeposited Funds", "is_single_bill_payment": true, "is_paid_via_print_check": false, "check_details": [ { "check_status": "string", "check_number": "string" } ], "is_ach_payment": false, "ach_payment_status": "string", "ach_gw_transaction_id": "string", "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string" } ], "vendor_credits": [ { "vendor_credit_id": "4600000053221", "vendor_credit_bill_id": "4600000211221", "vendor_credit_number": "DN-001", "date": "27 Dec 2016", "amount": 10 } ], "created_time": "2013-09-11T17:18:32+0530", "created_by_id": "4600000053001", "last_modified_time": "2013-09-11T17:18:32+0530", "reference_id": "string", "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "attachment_name": "string", "open_purchaseorders_count": 1 }

Create a bill

Create a bill received from your vendor.
OAuth Scope : ZohoBooks.bills.CREATE

Arguments

vendor_id
string
(Required)
Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.
currency_id
string
Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.
vat_treatment
string
🇬🇧 United Kingdom
only
(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
is_update_customer
boolean
Flag to determine if customer information should be updated when creating the bill.
purchaseorder_ids
array
Array of purchase order identifiers linked to this bill for tracking purposes.
bill_number
string
(Required)
Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.
documents
array
Show Sub-Attributes arrow
document_id
long
ID of the Document
file_name
string
Name of the file
source_of_supply
string
🇮🇳 India
only
State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
destination_of_supply
string
🇮🇳 India
only
State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
permit_number
string
🇦🇪 United Arab Emirates
only
The permit number for the bill.
gst_treatment
string
🇮🇳 India
only
Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
pricebook_id
string
Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.
reference_number
string
External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.
date
string
Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.
due_date
string
Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.
payment_terms
integer
Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.
payment_terms_label
string
Label of the Payment Terms
recurring_bill_id
string
Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.
exchange_rate
double
Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.
is_item_level_tax_calc
boolean
Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.
is_inclusive_tax
boolean
Not applicable 🇺🇸 United States
Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.
adjustment
double
Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.
adjustment_description
string
Text description explaining the reason for bill adjustment. Examples: "Early payment discount", "Volume discount", "Rounding adjustment", "Handling fee". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
custom_fields
array
Show Sub-Attributes arrow
index
integer
Index of the custom field
value
string
Value of the Custom Field
line_items
array
Line items of a bill.
Show Sub-Attributes arrow
purchaseorder_item_id
string
Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.
line_item_id
string
Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.
item_id
string
Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.
name
string
Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.
account_id
string
Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.
description
string
Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.
rate
double
Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.
hsn_or_sac
string
🇮🇳 India
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
Add HSN/SAC code for your goods/services
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Reverse charge tax ID
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
quantity
double
Number of units for the line item. Used to calculate line item totals (quantity × rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tds_tax_id
string
🇲🇽 Mexico
only
TDS ID of the tax or tax group applied to the line item
tax_treatment_code
string
GCC only
Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.
tax_exemption_id
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
only
ID of the Tax Exemption Applied
tax_exemption_code
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
, 🇲🇽 Mexico
only
Code of the Tax Exemption Applied
item_order
integer
product_type
string
Europe , 🇬🇧 United Kingdom
only
Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.
acquisition_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.
unit
string
Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.
tags
array
Show Sub-Attributes arrow
tag_id
long
ID of the Tag
tag_option_id
long
Id of the Tag Option
is_billable
boolean
Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.
project_id
string
ID of the Project
customer_id
string
ID of the Customer
item_custom_fields
array
Show Sub-Attributes arrow
custom_field_id
long
index
integer
Index of the custom field
value
string
Value of the Custom Field
label
string
Label of the Custom Field
serial_numbers
array
taxes
array
Show Sub-Attributes arrow
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tax_name
string
Name of the Tax
tax_amount
string
Amount of Tax in the Bill
notes
string
Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.
terms
string
Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.
approvers
array
Show Sub-Attributes arrow
approver_id
long
ID of the Approver
order
integer
Order of the Approver

Query Parameters

organization_id
string
(Required)
ID of the organization
attachment
binary
File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf.

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills?organization_id=10234695" type: POST headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills?organization_id=10234695") .post(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bills?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("POST", "/books/v3/bills?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "vendor_id": "460000000038029", "currency_id": "460000000000099", "vat_treatment": "string", "is_update_customer": false, "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "bill_number": "00454", "documents": [ { "document_id": 0, "file_name": "string" } ], "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "gst_no": "22AAAAA0000A1Z5", "pricebook_id": 460000000038090, "reference_number": "4321133", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "recurring_bill_id": "string", "exchange_rate": 1.23, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "adjustment": 0, "adjustment_description": " ", "location_id": "460000000038080", "custom_fields": [ { "index": 0, "value": "string" } ], "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "name": "string", "account_id": "460000000000403", "description": "string", "rate": 10, "hsn_or_sac": 80540, "reverse_charge_tax_id": 460000000038056, "location_id": "460000000038080", "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "item_order": 1, "product_type": "string", "acquisition_vat_id": "string", "reverse_charge_vat_id": "string", "unit": "kgs", "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "is_billable": false, "project_id": "string", "customer_id": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ], "serial_numbers": [ "string" ] } ], "taxes": [ { "tax_id": "460000000027005", "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "approvers": [ { "approver_id": 0, "order": 0 } ] }

Response Example

{ "code": 0, "message": "success", "bill": { "bill_id": "460000000098765", "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "vendor_id": "460000000038029", "vendor_name": "string", "vat_treatment": "string", "vat_reg_no": "string", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "is_pre_gst": false, "pricebook_id": 460000000038090, "pricebook_name": "string", "is_reverse_charge_applied": true, "unused_credits_payable_amount": 187, "status": "open", "bill_number": "00454", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "payment_expected_date": "string", "reference_number": "4321133", "recurring_bill_id": "string", "due_by_days": "string", "due_in_days": 0, "currency_id": "460000000000099", "currency_code": "INR", "currency_symbol": "string", "documents": [ { "document_id": 0, "file_name": "string" } ], "price_precision": 2, "exchange_rate": 1.23, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ], "is_tds_applied": true, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string", "is_abn_quoted": "string", "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "sku": "string", "name": "string", "account_id": "460000000000403", "account_name": "Other Expenses", "image_document_id": 460000000038067, "location_id": "460000000038080", "location_name": "string", "reverse_charge_tax_id": 460000000038056, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 100, "description": "string", "bcy_rate": 40, "rate": 10, "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "tax_name": "VAT (12.5%)", "tax_type": "tax", "tax_percentage": 0, "item_total": 40, "item_total_inclusive_of_tax": 40, "item_order": 1, "unit": "kgs", "product_type": "string", "hsn_or_sac": 80540, "acquisition_vat_id": "string", "acquisition_vat_name": "string", "acquisition_vat_percentage": "string", "acquisition_vat_amount": "string", "reverse_charge_vat_id": "string", "reverse_charge_vat_name": "string", "reverse_charge_vat_percentage": "string", "reverse_charge_vat_amount": "string", "is_billable": false, "customer_id": "string", "customer_name": "string", "project_id": "string", "project_name": "string", "invoice_id": "string", "invoice_number": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ] } ], "location_id": "460000000038080", "location_name": "string", "sub_total": 40, "tax_total": 0, "total": 40, "payment_made": 0, "vendor_credits_applied": 0, "is_line_item_invoiced": false, "purchaseorders": [ { "purchaseorder_id": "460000000068231", "purchaseorder_number": "PO-0001", "purchaseorder_date": "19 Jan 2017", "purchaseorder_status": "billed" } ], "taxes": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_total": 0.1, "reverse_charge_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "reverse_charge_vat_total": 0.1, "balance": 40, "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" }, "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "payment_mode": "Cash", "payment_number": "string", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through_account_id": "460000000000358", "paid_through_account_name": "Undeposited Funds", "is_single_bill_payment": true, "is_paid_via_print_check": false, "check_details": [ { "check_status": "string", "check_number": "string" } ], "is_ach_payment": false, "ach_payment_status": "string", "ach_gw_transaction_id": "string", "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string" } ], "vendor_credits": [ { "vendor_credit_id": "4600000053221", "vendor_credit_bill_id": "4600000211221", "vendor_credit_number": "DN-001", "date": "27 Dec 2016", "amount": 10 } ], "created_time": "2013-09-11T17:18:32+0530", "created_by_id": "4600000053001", "last_modified_time": "2013-09-11T17:18:32+0530", "reference_id": "string", "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "attachment_name": "string", "open_purchaseorders_count": 1 } }

Update a bill using a custom field's unique value

A custom field will have unique values if it's configured to not accept duplicate values. Now, you can use that custom field's value to update a bill by providing its API name in the X-Unique-Identifier-Key header and its value in the X-Unique-Identifier-Value header. Based on this value, the corresponding bill will be retrieved and updated. Additionally, there is an optional X-Upsert header. If the X-Upsert header is true and the custom field's unique value is not found in any of the existing bills, a new bill will be created if the necessary payload details are available
OAuth Scope : ZohoBooks.bills.UPDATE

Arguments

vendor_id
string
(Required)
Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.
currency_id
string
Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.
vat_treatment
string
🇬🇧 United Kingdom
only
(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
is_update_customer
boolean
Flag to determine if customer information should be updated when creating the bill.
purchaseorder_ids
array
Array of purchase order identifiers linked to this bill for tracking purposes.
bill_number
string
(Required)
Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.
documents
array
Show Sub-Attributes arrow
document_id
long
ID of the Document
file_name
string
Name of the file
source_of_supply
string
🇮🇳 India
only
State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
destination_of_supply
string
🇮🇳 India
only
State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
permit_number
string
🇦🇪 United Arab Emirates
only
The permit number for the bill.
gst_treatment
string
🇮🇳 India
only
Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
pricebook_id
string
Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.
reference_number
string
External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.
date
string
Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.
due_date
string
Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.
payment_terms
integer
Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.
payment_terms_label
string
Label of the Payment Terms
recurring_bill_id
string
Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.
exchange_rate
double
Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.
is_item_level_tax_calc
boolean
Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.
is_inclusive_tax
boolean
Not applicable 🇺🇸 United States
Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.
adjustment
double
Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.
adjustment_description
string
Text description explaining the reason for bill adjustment. Examples: "Early payment discount", "Volume discount", "Rounding adjustment", "Handling fee". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.
custom_fields
array
Show Sub-Attributes arrow
index
integer
Index of the custom field
value
string
Value of the Custom Field
line_items
array
Line items of a bill.
Show Sub-Attributes arrow
purchaseorder_item_id
string
Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.
line_item_id
string
Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.
item_id
string
Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.
name
string
Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.
account_id
string
Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.
description
string
Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.
rate
double
Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.
hsn_or_sac
string
🇮🇳 India
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
Add HSN/SAC code for your goods/services
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Reverse charge tax ID
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
quantity
double
Number of units for the line item. Used to calculate line item totals (quantity × rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tds_tax_id
string
🇲🇽 Mexico
only
TDS ID of the tax or tax group applied to the line item
tax_treatment_code
string
GCC only
Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.
tax_exemption_id
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
only
ID of the Tax Exemption Applied
tax_exemption_code
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
, 🇲🇽 Mexico
only
Code of the Tax Exemption Applied
item_order
integer
product_type
string
Europe , 🇬🇧 United Kingdom
only
Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.
acquisition_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.
unit
string
Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.
tags
array
Show Sub-Attributes arrow
tag_id
long
ID of the Tag
tag_option_id
long
Id of the Tag Option
is_billable
boolean
Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.
project_id
string
ID of the Project
customer_id
string
ID of the Customer
item_custom_fields
array
Show Sub-Attributes arrow
custom_field_id
long
index
integer
Index of the custom field
value
string
Value of the Custom Field
label
string
Label of the Custom Field
serial_numbers
array
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
taxes
array
Show Sub-Attributes arrow
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tax_name
string
Name of the Tax
tax_amount
string
Amount of Tax in the Bill
notes
string
Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.
terms
string
Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.
approvers
array
Show Sub-Attributes arrow
approver_id
long
ID of the Approver
order
integer
Order of the Approver

Query Parameters

organization_id
string
(Required)
ID of the organization

Headers

X-Unique-Identifier-Key
string
(Required)
Specify the API name of the custom field that contains unique values. This field must be configured to not accept duplicate values for the upsert functionality to work properly.
X-Unique-Identifier-Value
string
(Required)
Provide the unique value from the custom field that identifies the specific bill to update. This value will be used to locate the existing bill record in the system.
X-Upsert
boolean
When set to true, this header enables upsert functionality. If no bill is found with the specified custom field value, a new bill will be created using the provided payload data.

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("X-Unique-Identifier-Key", "cf_unique_cf"); headers_data.put("X-Unique-Identifier-Value", "unique Value"); headers_data.put("X-Upsert", "true"); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills?organization_id=10234695" type: PUT headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills?organization_id=10234695") .put(body) .addHeader("X-Unique-Identifier-Key", "cf_unique_cf") .addHeader("X-Unique-Identifier-Value", "unique Value") .addHeader("X-Upsert", "true") .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PUT', headers: { 'X-Unique-Identifier-Key': 'cf_unique_cf', 'X-Unique-Identifier-Value': 'unique Value', 'X-Upsert': 'true', Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bills?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'X-Unique-Identifier-Key': "cf_unique_cf", 'X-Unique-Identifier-Value': "unique Value", 'X-Upsert': "true", 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PUT", "/books/v3/bills?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PUT", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills?organization_id=10234695", "headers": { "X-Unique-Identifier-Key": "cf_unique_cf", "X-Unique-Identifier-Value": "unique Value", "X-Upsert": "true", "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request PUT \ --url 'https://www.zohoapis.com/books/v3/bills?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'X-Unique-Identifier-Key: cf_unique_cf' \ --header 'X-Unique-Identifier-Value: unique Value' \ --header 'X-Upsert: true' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "vendor_id": "460000000038029", "currency_id": "460000000000099", "vat_treatment": "string", "is_update_customer": false, "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "bill_number": "00454", "documents": [ { "document_id": 0, "file_name": "string" } ], "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "gst_no": "22AAAAA0000A1Z5", "pricebook_id": 460000000038090, "reference_number": "4321133", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "recurring_bill_id": "string", "exchange_rate": 1.23, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "index": 0, "value": "string" } ], "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "name": "string", "account_id": "460000000000403", "description": "string", "rate": 10, "hsn_or_sac": 80540, "reverse_charge_tax_id": 460000000038056, "location_id": "460000000038080", "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "item_order": 1, "product_type": "string", "acquisition_vat_id": "string", "reverse_charge_vat_id": "string", "unit": "kgs", "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "is_billable": false, "project_id": "string", "customer_id": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ], "serial_numbers": [ "string" ] } ], "location_id": "460000000038080", "taxes": [ { "tax_id": "460000000027005", "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "approvers": [ { "approver_id": 0, "order": 0 } ] }

Response Example

{ "code": 0, "message": "Bill information has been updated.", "bill": { "bill_id": "460000000098765", "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "vendor_id": "460000000038029", "vendor_name": "string", "vat_treatment": "string", "vat_reg_no": "string", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "is_pre_gst": false, "pricebook_id": 460000000038090, "pricebook_name": "string", "is_reverse_charge_applied": true, "unused_credits_payable_amount": 187, "status": "open", "bill_number": "00454", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "payment_expected_date": "string", "reference_number": "4321133", "recurring_bill_id": "string", "due_by_days": "string", "due_in_days": 0, "currency_id": "460000000000099", "currency_code": "INR", "currency_symbol": "string", "documents": [ { "document_id": 0, "file_name": "string" } ], "price_precision": 2, "exchange_rate": 1.23, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ], "is_tds_applied": true, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string", "is_abn_quoted": "string", "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "sku": "string", "name": "string", "account_id": "460000000000403", "account_name": "Other Expenses", "image_document_id": 460000000038067, "location_id": "460000000038080", "location_name": "string", "reverse_charge_tax_id": 460000000038056, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 100, "description": "string", "bcy_rate": 40, "rate": 10, "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "tax_name": "VAT (12.5%)", "tax_type": "tax", "tax_percentage": 0, "item_total": 40, "item_total_inclusive_of_tax": 40, "item_order": 1, "unit": "kgs", "product_type": "string", "hsn_or_sac": 80540, "acquisition_vat_id": "string", "acquisition_vat_name": "string", "acquisition_vat_percentage": "string", "acquisition_vat_amount": "string", "reverse_charge_vat_id": "string", "reverse_charge_vat_name": "string", "reverse_charge_vat_percentage": "string", "reverse_charge_vat_amount": "string", "is_billable": false, "customer_id": "string", "customer_name": "string", "project_id": "string", "project_name": "string", "invoice_id": "string", "invoice_number": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ] } ], "location_id": "460000000038080", "location_name": "string", "sub_total": 40, "tax_total": 0, "total": 40, "payment_made": 0, "vendor_credits_applied": 0, "is_line_item_invoiced": false, "purchaseorders": [ { "purchaseorder_id": "460000000068231", "purchaseorder_number": "PO-0001", "purchaseorder_date": "19 Jan 2017", "purchaseorder_status": "billed" } ], "taxes": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_total": 0.1, "reverse_charge_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "reverse_charge_vat_total": 0.1, "balance": 40, "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" }, "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "payment_mode": "Cash", "payment_number": "string", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through_account_id": "460000000000358", "paid_through_account_name": "Undeposited Funds", "is_single_bill_payment": true, "is_paid_via_print_check": false, "check_details": [ { "check_status": "string", "check_number": "string" } ], "is_ach_payment": false, "ach_payment_status": "string", "ach_gw_transaction_id": "string", "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string" } ], "vendor_credits": [ { "vendor_credit_id": "4600000053221", "vendor_credit_bill_id": "4600000211221", "vendor_credit_number": "DN-001", "date": "27 Dec 2016", "amount": 10 } ], "created_time": "2013-09-11T17:18:32+0530", "created_by_id": "4600000053001", "last_modified_time": "2013-09-11T17:18:32+0530", "reference_id": "string", "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "attachment_name": "string", "open_purchaseorders_count": 1 } }

List bills

List all bills with pagination.
OAuth Scope : ZohoBooks.bills.READ

Query Parameters

organization_id
string
(Required)
ID of the organization
bill_number
string
Filter bills by bill number. Accepts exact matches or use bill_number_startswith for prefix matching and bill_number_contains for substring matching. Useful for finding bills by unique identifier or partial patterns.
reference_number
string
Filter bills by reference number. Accepts exact matches or use reference_number_startswith for prefix matching and reference_number_contains for substring matching. Useful for finding bills by external references or vendor invoice numbers.
date
string
Filter bills by bill date in YYYY-MM-DD format. Use date_start/date_end for ranges, date_before/date_after for relative dates. Useful for billing periods and due date management.
status
string
Filter bills by status: paid, open, overdue, void, or partially_paid. Useful for payment status filtering, accounts payable management, and status-specific reporting.
description
string
Filter bills by description text. Accepts exact matches or use description_startswith for prefix matching and description_contains for substring matching. Useful for finding bills by line item descriptions or vendor notes.
vendor_name
string
Filter bills by vendor name. Use vendor_name_startswith for prefix matching or vendor_name_contains for substring matching. Useful for finding bills from specific suppliers.
total
double
Filter bills by total amount. Use total_less_than, total_less_equals, total_greater_than, or total_greater_equals for amount-based filtering. Useful for finding bills within specific price ranges or above/below certain thresholds.
vendor_id
long
Filter bills by specific vendor ID. Accepts the unique identifier for a vendor to retrieve all bills associated with that particular supplier or vendor account.
item_id
long
Filter bills by specific item ID. Retrieves all bills containing a particular product or service item based on its unique identifier.
recurring_bill_id
long
Filter bills by recurring bill ID. Retrieves all bills generated from a specific recurring bill template or schedule.
purchaseorder_id
long
Filter bills by purchase order ID. Retrieves all bills associated with a specific purchase order for tracking procurement workflows.
last_modified_time
string
Filter bills by last modification timestamp. Accepts ISO 8601 format (YYYY-MM-DDTHH:MM:SS+/-HHMM) to find bills modified at or after a specific time.
filter_by
string
Filter bills by status using predefined status constants. Options include Status.All, Status.PartiallyPaid, Status.Paid, Status.Overdue, Status.Void, and Status.Open.
search_text
string
Filter bills using general search text. Searches across bill number, reference number, and vendor name fields to find matching bills. Useful for quick searches when you know part of the bill information.
page
integer
Specify the page number for pagination. Use this parameter to navigate through multiple pages of bills when the total number of bills exceeds the per_page limit.
per_page
integer
Specify the number of bills to retrieve per page. The default value is 200, but you can adjust this to optimize performance based on your needs and API rate limits.
sort_column
string
Specify the column to sort bills by. Available options include vendor_name, bill_number, date, due_date, total, balance, and created_time.
sort_order
string
Specify the sorting order for bills. Use A for ascending order (A-Z, 0-9, earliest to latest) or D for descending order (Z-A, 9-0, latest to earliest).

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/bills?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/bills?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "bills": [ { "bill_id": "460000000098765", "vendor_id": "460000000038029", "vendor_name": "string", "status": "open", "bill_number": "00454", "reference_number": "4321133", "date": "2013-09-11", "due_date": "2013-09-26", "due_days": "string", "currency_id": "460000000000099", "currency_code": "INR", "price_precision": 2, "exchange_rate": 1.23, "total": 40, "balance": 40, "location_id": "460000000038080", "location_name": "string", "created_time": "2013-09-11T17:18:32+0530", "last_modified_time": "2013-09-11T17:18:32+0530", "attachment_name": "string", "has_attachment": false, "is_tds_applied": true, "is_abn_quoted": "string" }, {...}, {...} ], "page_context": { "page": 1, "per_page": 200, "has_more_page": false, "report_name": "Bills", "applied_filter": "Status.All", "sort_column": "string", "sort_order": "D" } }

Update a bill

Update a bill. To delete a line item just remove it from the line_items list.
OAuth Scope : ZohoBooks.bills.UPDATE

Arguments

vendor_id
string
(Required)
Unique identifier for the vendor who supplied the goods/services. Can be fetched from the Get Contacts API.
currency_id
string
Unique identifier for the currency used in the bill transaction. Can be fetched from the Currencies API if multi-currency is enabled.
vat_treatment
string
🇬🇧 United Kingdom
only
(Optional) VAT treatment for the bill. VAT treatment denotes the location of the vendor, if the vendor resides in UK then the VAT treatment is uk. If the vendor is in an EU country & VAT registered, you are resides in Northen Ireland and purchasing Goods then his VAT treatment is eu_vat_registered, if he resides outside of the UK then his VAT treatment is overseas (For Pre Brexit, this can be split as eu_vat_registered, eu_vat_not_registered and non_eu).
is_update_customer
boolean
Flag to determine if customer information should be updated when creating the bill.
purchaseorder_ids
array
Array of purchase order identifiers linked to this bill for tracking purposes.
bill_number
string
(Required)
Unique sequential identifier for the bill. Used for tracking and reference purposes. Format varies by organization settings. Can be auto-generated or manually entered. Must be unique within the organization.
documents
array
Show Sub-Attributes arrow
document_id
long
ID of the Document
file_name
string
Name of the file
source_of_supply
string
🇮🇳 India
only
State code where goods/services originate. Used for GST calculations in India. Defaults to vendor contact location if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
destination_of_supply
string
🇮🇳 India
only
State code where goods/services are delivered. Used for GST calculations in India. Defaults to organization home state if not specified. Supports 2-letter state codes (e.g., AP for Andhra Pradesh, TN for Tamil Nadu).
place_of_supply
string
GCC only
The place of supply is where a transaction is considered to have occurred for VAT purposes. For the supply of goods, the place of supply is the location of the goods when the supply occurs. For the supply of services, the place of supply should be where the supplier is established. (If not given, place of contact given for the contact will be taken)
Supported codes for UAE emirates are :
Abu Dhabi - AB,
Ajman - AJ,
Dubai - DU,
Fujairah - FU,
Ras al-Khaimah - RA,
Sharjah - SH,
Umm al-Quwain - UM.
Supported codes for the GCC countries are :
United Arab Emirates - AE,
Saudi Arabia - SA,
Bahrain - BH,
Kuwait - KW,
Oman - OM,
Qatar - QA.
permit_number
string
🇦🇪 United Arab Emirates
only
The permit number for the bill.
gst_treatment
string
🇮🇳 India
only
Choose whether the contact is GST registered/unregistered/consumer/overseas. Allowed values are business_gst , business_none , overseas , consumer .
tax_treatment
string
GCC , 🇲🇽 Mexico
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
VAT treatment for the bill. Choose whether the vendor falls under: vat_registered,vat_not_registered,gcc_vat_not_registered,gcc_vat_registered,non_gcc.
dz_vat_registered and dz_vat_not_registered are supported only for UAE.
home_country_mexico,border_region_mexico,non_mexico supported only for MX.
For Kenya Edition: vat_registered ,vat_not_registered ,non_kenya(A business that is located outside Kenya).
For SouthAfrica Edition: vat_registered, vat_not_registered, overseas(A business that is located outside SouthAfrica).
gst_no
string
🇮🇳 India
only
15 digit GST identification number of the vendor.
pricebook_id
string
Identifier for the price book containing item rates and pricing rules. Used to apply standardized pricing across bills. If not specified, default pricing from items will be used. Helps maintain consistent pricing across multiple transactions.
reference_number
string
External reference number from vendor invoice or purchase order. Used for cross-referencing with vendor documents. Helps in reconciliation and tracking payments. Can include invoice numbers, PO references, or any vendor-specific identifiers.
date
string
Date when the bill was issued by the vendor. Format: yyyy-mm-dd. Used for payment terms and aging calculations. This date determines when payment terms begin and affects aging reports, late payment calculations, and financial reporting.
due_date
string
Date when payment is due for the bill. Used for payment tracking, aging reports, and overdue calculations. Calculated based on bill date and payment terms. Bills become overdue after this date, affecting vendor relationships and cash flow planning.
payment_terms
integer
Numeric identifier for payment terms configuration. Defines when payment is due relative to bill date. 0 = Due on Receipt, positive numbers = days after bill date, negative numbers = days before bill date. Common values: 0 (Due on Receipt), 15 (Net 15), 30 (Net 30), 45 (Net 45). Affects due date calculation and aging reports.
payment_terms_label
string
Label of the Payment Terms
recurring_bill_id
string
Identifier linking this bill to a recurring bill template. Used for bills that are automatically generated on a schedule (weekly, monthly, quarterly, etc.). Enables automated bill generation, consistent billing cycles, and reduces manual data entry. Can be modified to change recurring schedule.
exchange_rate
double
Exchange rate from bill currency to organization base currency. Used for multi-currency transactions. 1.0 indicates same as base currency. Required when currency differs from organization default. Affects financial reporting, profit/loss calculations, and tax computations. Can be manually set or auto-fetched from currency exchange services.
is_item_level_tax_calc
boolean
Flag indicating whether taxes are calculated at individual line item level rather than bill total. Enables different tax rates for different items. Provides more accurate tax calculations for mixed tax scenarios. When enabled, each line item can have different tax rates based on item type, location, or tax rules. Improves tax compliance and reporting accuracy.
is_inclusive_tax
boolean
Not applicable 🇺🇸 United States
Flag indicating whether line item rates include tax amounts. When true, tax is calculated on top of displayed rates. When false, tax is added separately. Affects total calculations and tax reporting. Common in countries where tax-inclusive pricing is standard. Impacts customer-facing documents and tax return preparation.
adjustment
double
Additional amount added to or subtracted from bill total. Positive values increase total, negative values decrease total. Used for discounts, surcharges, rounding adjustments, or other modifications. Affects final bill amount, tax calculations, and payment processing.
adjustment_description
string
Text description explaining the reason for bill adjustment. Examples: "Early payment discount", "Volume discount", "Rounding adjustment", "Handling fee". Helps in audit trails and reporting. Required when adjustment amount is non-zero. Used in financial reports, tax returns, and vendor communications. Should be clear and specific for compliance purposes.
custom_fields
array
Show Sub-Attributes arrow
index
integer
Index of the custom field
value
string
Value of the Custom Field
line_items
array
Line items of a bill.
Show Sub-Attributes arrow
purchaseorder_item_id
string
Unique identifier linking this line item to a specific item in the purchase order. Used for tracking PO-to-bill conversions and maintaining audit trails. Required when converting purchase orders to bills.
line_item_id
string
Unique identifier for this specific line item within the bill. Auto-generated when line item is created. Used for updating, deleting, or referencing specific line items in API operations.
item_id
string
Unique identifier for the product or service item. Can be fetched from the Items API. When specified, automatically populates item details like name, description, and default rates. Required for inventory tracking and item-based reporting.
name
string
Name or description of the line item. Can be manually entered or auto-populated from item details. Should clearly describe the product, service, or expense for vendor and accounting purposes.
account_id
string
Unique identifier for the chart of accounts entry. Can be fetched from the Chart of Accounts API. Determines how this expense is categorized in financial reports and general ledger. Required for proper expense classification and accounting compliance.
description
string
Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.
rate
double
Unit price or rate for the line item. Can be manually entered or auto-populated from item details or price books. Used to calculate line item totals. Supports decimal precision based on currency settings.
hsn_or_sac
string
🇮🇳 India
, 🇰🇪 Kenya
, 🇿🇦 South Africa
only
Add HSN/SAC code for your goods/services
reverse_charge_tax_id
string
🇮🇳 India
, GCC , 🇿🇦 South Africa
only
Reverse charge tax ID
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
quantity
double
Number of units for the line item. Used to calculate line item totals (quantity × rate). Supports decimal quantities for items sold by weight, length, or other non-whole units. Required for accurate billing and inventory tracking.
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tds_tax_id
string
🇲🇽 Mexico
only
TDS ID of the tax or tax group applied to the line item
tax_treatment_code
string
GCC only
Specify reason for using out of scope.
Supported values for UAE are uae_same_tax_group, uae_reimbursed_expense and uae_others.
Supported values for Bahrain are bahrain_same_tax_group, bahrain_transfer_of_concern, bahrain_disbursement, bahrain_head_to_branch_transaction and bahrain_others.
Supported values for KSA are ksa_reimbursed_expense.
tax_exemption_id
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
only
ID of the Tax Exemption Applied
tax_exemption_code
string
🇮🇳 India
, 🇦🇺 Australia
, 🇨🇦 Canada
, 🇲🇽 Mexico
only
Code of the Tax Exemption Applied
item_order
integer
product_type
string
Europe , 🇬🇧 United Kingdom
only
Type of the bill. This denotes whether the bill line item is to be treated as a goods or service purchase. This only need to be specified in case purchase order is not enabled. Allowed Values: digital_service, goods and service.
acquisition_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is an EU - goods purchase and acquisition VAT needs to be reported.
reverse_charge_vat_id
string
🇬🇧 United Kingdom
only
(Optional) This is the ID of the tax applied in case this is a non UK - service purchase and reverse charge VAT needs to be reported.
unit
string
Unit of measurement for the item quantity. Examples: pieces, kgs, liters, hours, days. Used for accurate billing and inventory tracking. Auto-populated when item_id is specified. Important for vendor communication and expense categorization.
tags
array
Show Sub-Attributes arrow
tag_id
long
ID of the Tag
tag_option_id
long
Id of the Tag Option
is_billable
boolean
Boolean flag indicating whether the line item or entity can be billed to customers or clients. Determines if costs are recoverable through customer billing, affects project profitability calculations, and controls expense allocation for client projects and service delivery.
project_id
string
ID of the Project
customer_id
string
ID of the Customer
item_custom_fields
array
Show Sub-Attributes arrow
custom_field_id
long
index
integer
Index of the custom field
value
string
Value of the Custom Field
label
string
Label of the Custom Field
serial_numbers
array
location_id
string
Unique identifier for the business location where the bill transaction occurs. Used for multi-location organizations to track expenses by location. Affects reporting and tax calculations based on location-specific rules. Can be fetched from the Locations API. Required for organizations with multiple locations. Influences tax rates, reporting structures, and approval workflows based on location-specific configurations.
taxes
array
Show Sub-Attributes arrow
tax_id
string
Not applicable 🇺🇸 United States
Unique identifier for the tax or tax group applied to this line item. Can be fetched from the Taxes API. Determines tax rate and calculations for the line item. Required when tax calculations are enabled. Affects final line item total and tax reporting.
tax_name
string
Name of the Tax
tax_amount
string
Amount of Tax in the Bill
notes
string
Additional information or comments about the bill. Used for internal communication, vendor instructions, or special handling requirements. Visible to vendors and included in bill communications. Useful for tracking special arrangements or payment instructions.
terms
string
Terms and conditions that apply to the bill transaction. Includes payment terms, delivery conditions, warranty information, or other contractual obligations. Displayed on bill documents and vendor communications. Important for legal compliance and vendor relationship management.
approvers
array
Show Sub-Attributes arrow
approver_id
long
ID of the Approver
order
integer
Order of the Approver

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization
attachment
binary
File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf.

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695" type: PUT headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695") .put(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PUT', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PUT", "/books/v3/bills/460000000098765?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PUT", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request PUT \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "vendor_id": "460000000038029", "currency_id": "460000000000099", "vat_treatment": "string", "is_update_customer": false, "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "bill_number": "00454", "documents": [ { "document_id": 0, "file_name": "string" } ], "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "gst_no": "22AAAAA0000A1Z5", "pricebook_id": 460000000038090, "reference_number": "4321133", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "recurring_bill_id": "string", "exchange_rate": 1.23, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "index": 0, "value": "string" } ], "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "name": "string", "account_id": "460000000000403", "description": "string", "rate": 10, "hsn_or_sac": 80540, "reverse_charge_tax_id": 460000000038056, "location_id": "460000000038080", "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "item_order": 1, "product_type": "string", "acquisition_vat_id": "string", "reverse_charge_vat_id": "string", "unit": "kgs", "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "is_billable": false, "project_id": "string", "customer_id": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ], "serial_numbers": [ "string" ] } ], "location_id": "460000000038080", "taxes": [ { "tax_id": "460000000027005", "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "approvers": [ { "approver_id": 0, "order": 0 } ] }

Response Example

{ "code": 0, "message": "Bill information has been updated.", "bill": { "bill_id": "460000000098765", "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "vendor_id": "460000000038029", "vendor_name": "string", "vat_treatment": "string", "vat_reg_no": "string", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "is_pre_gst": false, "pricebook_id": 460000000038090, "pricebook_name": "string", "is_reverse_charge_applied": true, "unused_credits_payable_amount": 187, "status": "open", "bill_number": "00454", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "payment_expected_date": "string", "reference_number": "4321133", "recurring_bill_id": "string", "due_by_days": "string", "due_in_days": 0, "currency_id": "460000000000099", "currency_code": "INR", "currency_symbol": "string", "documents": [ { "document_id": 0, "file_name": "string" } ], "price_precision": 2, "exchange_rate": 1.23, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ], "is_tds_applied": true, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string", "is_abn_quoted": "string", "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "sku": "string", "name": "string", "account_id": "460000000000403", "account_name": "Other Expenses", "image_document_id": 460000000038067, "location_id": "460000000038080", "location_name": "string", "reverse_charge_tax_id": 460000000038056, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 100, "description": "string", "bcy_rate": 40, "rate": 10, "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "tax_name": "VAT (12.5%)", "tax_type": "tax", "tax_percentage": 0, "item_total": 40, "item_total_inclusive_of_tax": 40, "item_order": 1, "unit": "kgs", "product_type": "string", "hsn_or_sac": 80540, "acquisition_vat_id": "string", "acquisition_vat_name": "string", "acquisition_vat_percentage": "string", "acquisition_vat_amount": "string", "reverse_charge_vat_id": "string", "reverse_charge_vat_name": "string", "reverse_charge_vat_percentage": "string", "reverse_charge_vat_amount": "string", "is_billable": false, "customer_id": "string", "customer_name": "string", "project_id": "string", "project_name": "string", "invoice_id": "string", "invoice_number": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ] } ], "location_id": "460000000038080", "location_name": "string", "sub_total": 40, "tax_total": 0, "total": 40, "payment_made": 0, "vendor_credits_applied": 0, "is_line_item_invoiced": false, "purchaseorders": [ { "purchaseorder_id": "460000000068231", "purchaseorder_number": "PO-0001", "purchaseorder_date": "19 Jan 2017", "purchaseorder_status": "billed" } ], "taxes": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_total": 0.1, "reverse_charge_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "reverse_charge_vat_total": 0.1, "balance": 40, "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" }, "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "payment_mode": "Cash", "payment_number": "string", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through_account_id": "460000000000358", "paid_through_account_name": "Undeposited Funds", "is_single_bill_payment": true, "is_paid_via_print_check": false, "check_details": [ { "check_status": "string", "check_number": "string" } ], "is_ach_payment": false, "ach_payment_status": "string", "ach_gw_transaction_id": "string", "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string" } ], "vendor_credits": [ { "vendor_credit_id": "4600000053221", "vendor_credit_bill_id": "4600000211221", "vendor_credit_number": "DN-001", "date": "27 Dec 2016", "amount": 10 } ], "created_time": "2013-09-11T17:18:32+0530", "created_by_id": "4600000053001", "last_modified_time": "2013-09-11T17:18:32+0530", "reference_id": "string", "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "attachment_name": "string", "open_purchaseorders_count": 1 } }

Get a bill

Get the details of a bill.
OAuth Scope : ZohoBooks.bills.READ

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/bills/460000000098765?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "bill": { "bill_id": "460000000098765", "purchaseorder_ids": [ 460000000068231, 460000000068233 ], "vendor_id": "460000000038029", "vendor_name": "string", "vat_treatment": "string", "vat_reg_no": "string", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "is_pre_gst": false, "pricebook_id": 460000000038090, "pricebook_name": "string", "is_reverse_charge_applied": true, "unused_credits_payable_amount": 187, "status": "open", "bill_number": "00454", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "payment_expected_date": "string", "reference_number": "4321133", "recurring_bill_id": "string", "due_by_days": "string", "due_in_days": 0, "currency_id": "460000000000099", "currency_code": "INR", "currency_symbol": "string", "documents": [ { "document_id": 0, "file_name": "string" } ], "price_precision": 2, "exchange_rate": 1.23, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ], "is_tds_applied": true, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string", "is_abn_quoted": "string", "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "sku": "string", "name": "string", "account_id": "460000000000403", "account_name": "Other Expenses", "image_document_id": 460000000038067, "location_id": "460000000038080", "location_name": "string", "reverse_charge_tax_id": 460000000038056, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 100, "description": "string", "bcy_rate": 40, "rate": 10, "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "tax_name": "VAT (12.5%)", "tax_type": "tax", "tax_percentage": 0, "item_total": 40, "item_total_inclusive_of_tax": 40, "item_order": 1, "unit": "kgs", "product_type": "string", "hsn_or_sac": 80540, "acquisition_vat_id": "string", "acquisition_vat_name": "string", "acquisition_vat_percentage": "string", "acquisition_vat_amount": "string", "reverse_charge_vat_id": "string", "reverse_charge_vat_name": "string", "reverse_charge_vat_percentage": "string", "reverse_charge_vat_amount": "string", "is_billable": false, "customer_id": "string", "customer_name": "string", "project_id": "string", "project_name": "string", "invoice_id": "string", "invoice_number": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ] } ], "location_id": "460000000038080", "location_name": "string", "sub_total": 40, "tax_total": 0, "total": 40, "payment_made": 0, "vendor_credits_applied": 0, "is_line_item_invoiced": false, "purchaseorders": [ { "purchaseorder_id": "460000000068231", "purchaseorder_number": "PO-0001", "purchaseorder_date": "19 Jan 2017", "purchaseorder_status": "billed" } ], "taxes": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_total": 0.1, "reverse_charge_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "reverse_charge_vat_total": 0.1, "balance": 40, "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" }, "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "payment_mode": "Cash", "payment_number": "string", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through_account_id": "460000000000358", "paid_through_account_name": "Undeposited Funds", "is_single_bill_payment": true, "is_paid_via_print_check": false, "check_details": [ { "check_status": "string", "check_number": "string" } ], "is_ach_payment": false, "ach_payment_status": "string", "ach_gw_transaction_id": "string", "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string" } ], "vendor_credits": [ { "vendor_credit_id": "4600000053221", "vendor_credit_bill_id": "4600000211221", "vendor_credit_number": "DN-001", "date": "27 Dec 2016", "amount": 10 } ], "created_time": "2013-09-11T17:18:32+0530", "created_by_id": "4600000053001", "last_modified_time": "2013-09-11T17:18:32+0530", "reference_id": "string", "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "attachment_name": "string", "open_purchaseorders_count": 1 } }

Delete a bill

Delete an existing bill. Bills which have payments applied cannot be deleted.
OAuth Scope : ZohoBooks.bills.DELETE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695") .delete(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("DELETE", "/books/v3/bills/460000000098765?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request DELETE \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The bill has been deleted." }

Update custom field in existing bills

Update the value of the custom field in existing bills.
OAuth Scope : ZohoBooks.bills.UPDATE

Arguments

custom_field_id
long
index
integer
Index of the custom field
label
string
Label of the Custom Field
value
string
Value of the Custom Field

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bill/460000000098765/customfields?organization_id=10234695" type: PUT headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bill/460000000098765/customfields?organization_id=10234695") .put(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PUT', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bill/460000000098765/customfields?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PUT", "/books/v3/bill/460000000098765/customfields?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PUT", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bill/460000000098765/customfields?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request PUT \ --url 'https://www.zohoapis.com/books/v3/bill/460000000098765/customfields?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
[ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ]

Response Example

{ "code": 0, "message": "Custom Fields Updated Successfully" }

Void a bill

Mark a bill status as void.
OAuth Scope : ZohoBooks.bills.CREATE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/status/void?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/status/void?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/status/void?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/bills/460000000098765/status/void?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/status/void?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/status/void?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The bill has been marked as void." }

Mark a bill as open

Mark a void bill as open.
OAuth Scope : ZohoBooks.bills.CREATE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/status/open?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/status/open?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/status/open?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/bills/460000000098765/status/open?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/status/open?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/status/open?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The status of the bill has been chaged to open." }

Submit a bill for approval

Submit a bill for approval.
OAuth Scope : ZohoBooks.bills.CREATE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/submit?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/submit?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/submit?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/bills/460000000098765/submit?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/submit?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/submit?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The bill has been submitted for approval successfully." }

Approve a bill

Approve a bill.
OAuth Scope : ZohoBooks.bills.CREATE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/approve?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/approve?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/approve?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/bills/460000000098765/approve?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/approve?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/approve?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success" }

Update billing address

Updates the billing address for this bill.
OAuth Scope : ZohoBooks.bills.UPDATE

Arguments

address
string
Address involved in the Bill
city
string
City in the Address
state
string
State involved in the Address
zip
string
ZIP Code involved in the Address
country
string
Country Involved in the Address
fax
string
Fax of the Vendor
attention
string
is_update_customer
boolean
Flag to determine if customer information should be updated when creating the bill.

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/address/billing?organization_id=10234695" type: PUT headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/address/billing?organization_id=10234695") .put(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'PUT', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/address/billing?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("PUT", "/books/v3/bills/460000000098765/address/billing?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "PUT", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/address/billing?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request PUT \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/address/billing?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "address": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string", "is_update_customer": false }

Response Example

{ "code": 0, "message": "Billing address updated.", "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" } }

List bill payments

Get the list of payments made for a bill.
OAuth Scope : ZohoBooks.bills.READ

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/payments?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/payments?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/payments?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/bills/460000000098765/payments?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/payments?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/payments?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "vendor_id": "460000000038029", "vendor_name": "string", "payment_mode": "Cash", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through": "Petty Cash", "is_single_bill_payment": true }, {...}, {...} ] }

Apply credits

Apply the vendor credits from excess vendor payments to a bill. Multiple credits can be applied at once.
OAuth Scope : ZohoBooks.bills.CREATE

Arguments

bill_payments
array
Show Sub-Attributes arrow
payment_id
string
ID of the Payment
amount_applied
double
Amount applied to the bill.
apply_vendor_credits
array
Show Sub-Attributes arrow
vendor_credit_id
string
ID of the Vendor Credit
amount_applied
double
Amount applied to the bill.

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/credits?organization_id=10234695" type: POST headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/credits?organization_id=10234695") .post(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/credits?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("POST", "/books/v3/bills/460000000098765/credits?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/credits?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/credits?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "bill_payments": [ { "payment_id": "460000000042059", "amount_applied": 31.25 } ], "apply_vendor_credits": [ { "vendor_credit_id": "4600000053221", "amount_applied": 31.25 } ] }

Response Example

{ "code": 0, "message": "Credits have been applied to the bill(s).\"" }

Delete a payment

Delete a payment made to a bill.
OAuth Scope : ZohoBooks.bills.DELETE

Path Parameters

bill_id
string
(Required)
bill_payment_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/payments/460000000042061?organization_id=10234695" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/payments/460000000042061?organization_id=10234695") .delete(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/payments/460000000042061?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("DELETE", "/books/v3/bills/460000000098765/payments/460000000042061?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/payments/460000000042061?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request DELETE \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/payments/460000000042061?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The payment has been deleted." }

Add attachment to a bill

Attach a file to a bill.
OAuth Scope : ZohoBooks.bills.CREATE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization
attachment
binary
File to attach. Allowed Extensions: gif, png, jpeg, jpg, bmp and pdf.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695" type: POST headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695") .post(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("POST", "/books/v3/bills/460000000098765/attachment?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/attachment?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The document has been attached." }

Get a bill attachment

Returns the file attached to the bill.
OAuth Scope : ZohoBooks.bills.READ

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization
preview
boolean
Get the thumbnail of the attachment.

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/bills/460000000098765/attachment?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/attachment?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success" }

Delete an attachment

Delete the file attached to a bill.
OAuth Scope : ZohoBooks.bills.DELETE

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695") .delete(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("DELETE", "/books/v3/bills/460000000098765/attachment?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/attachment?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request DELETE \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/attachment?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The attachment has been deleted." }

Add comment

Add a comment for a bill.
OAuth Scope : ZohoBooks.bills.CREATE

Arguments

description
string
(Required)
Detailed description of the line item. Provides additional context about the product, service, or expense. Used for vendor communication, internal documentation, and expense justification. Can include specifications, requirements, or special instructions.

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
parameters_data='{"field1":"value1","field2":"value2"}'; headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695" type: POST headers: headers_data content-type: application/json parameters: parameters_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\"field1\":\"value1\",\"field2\":\"value2\"}"); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695") .post(body) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .addHeader("content-type", "application/json") .build(); Response response = client.newCall(request).execute();
const options = { method: 'POST', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f', 'content-type': 'application/json' }, body: '{"field1":"value1","field2":"value2"}' }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") payload = "{\"field1\":\"value1\",\"field2\":\"value2\"}" headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", 'content-type': "application/json" } conn.request("POST", "/books/v3/bills/460000000098765/comments?organization_id=10234695", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "POST", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/comments?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f", "content-type": "application/json" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.write(JSON.stringify({field1: 'value1', field2: 'value2'})); req.end();
curl --request POST \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' \ --header 'content-type: application/json' \ --data '{"field1":"value1","field2":"value2"}'

Body Parameters

Click to copy
{ "description": "string" }

Response Example

{ "code": 0, "message": "Comments added.", "comment": { "comment_id": "460000000069037", "bill_id": "460000000098765", "description": "string", "commented_by_id": "460000000053001", "commented_by": "John Roberts", "comment_type": "internal", "date": "2013-09-11", "date_description": "few seconds ago", "time": "12:09 PM" } }

List bill comments & history

Get the complete history and comments of a bill.
OAuth Scope : ZohoBooks.bills.READ

Path Parameters

bill_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/bills/460000000098765/comments?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/comments?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/comments?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "comments": [ { "comment_id": "460000000069037", "bill_id": "460000000098765", "description": "string", "commented_by_id": "460000000053001", "commented_by": "John Roberts", "comment_type": "internal", "date": "17 Nov 2016", "date_description": "few seconds ago", "time": "12:09 PM", "operation_type": "Added", "transaction_id": "460000000068015", "transaction_type": "bill_payment" }, {...}, {...} ] }

Delete a comment

Delete a bill comment.
OAuth Scope : ZohoBooks.bills.DELETE

Path Parameters

bill_id
string
(Required)
comment_id
string
(Required)

Query Parameters

organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/460000000098765/comments/460000000069037?organization_id=10234695" type: DELETE headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/460000000098765/comments/460000000069037?organization_id=10234695") .delete(null) .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'DELETE', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/460000000098765/comments/460000000069037?organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("DELETE", "/books/v3/bills/460000000098765/comments/460000000069037?organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "DELETE", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/460000000098765/comments/460000000069037?organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request DELETE \ --url 'https://www.zohoapis.com/books/v3/bills/460000000098765/comments/460000000069037?organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "The comment has been deleted." }

Convert PO to Bill

Create a bill for the selected purchase orders. Use the create bill call to create a bill and pass the purchaseorder_item_id field to Body parameters > line items > purchaseorder_item_id of bill field.
OAuth Scope : ZohoBooks.bills.READ

Query Parameters

purchaseorder_ids
string
(Required)
ID of the purchase order
organization_id
string
(Required)
ID of the organization

Request Example

Click to copy
headers_data = Map(); headers_data.put("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f"); response = invokeUrl [ url: "https://www.zohoapis.com/books/v3/bills/editpage/frompurchaseorders?purchaseorder_ids=460000000098765&organization_id=10234695" type: GET headers: headers_data connection: <connection_name> ]; info response;
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zohoapis.com/books/v3/bills/editpage/frompurchaseorders?purchaseorder_ids=460000000098765&organization_id=10234695") .get() .addHeader("Authorization", "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f") .build(); Response response = client.newCall(request).execute();
const options = { method: 'GET', headers: { Authorization: 'Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f' } }; fetch('https://www.zohoapis.com/books/v3/bills/editpage/frompurchaseorders?purchaseorder_ids=460000000098765&organization_id=10234695', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err));
import http.client conn = http.client.HTTPSConnection("www.zohoapis.com") headers = { 'Authorization': "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } conn.request("GET", "/books/v3/bills/editpage/frompurchaseorders?purchaseorder_ids=460000000098765&organization_id=10234695", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8"))
const http = require("https"); const options = { "method": "GET", "hostname": "www.zohoapis.com", "port": null, "path": "/books/v3/bills/editpage/frompurchaseorders?purchaseorder_ids=460000000098765&organization_id=10234695", "headers": { "Authorization": "Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f" } }; const req = http.request(options, function (res) { const chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); res.on("end", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
curl --request GET \ --url 'https://www.zohoapis.com/books/v3/bills/editpage/frompurchaseorders?purchaseorder_ids=460000000098765&organization_id=10234695' \ --header 'Authorization: Zoho-oauthtoken 1000.41d9xxxxxxxxxxxxxxxxxxxxxxxxc2d1.8fccxxxxxxxxxxxxxxxxxxxxxxxx125f'

Response Example

{ "code": 0, "message": "success", "purchaseorder_ids": [ 460000000068231, 460000000068233, {...}, {...} ], "bill": { "bill_id": "460000000098765", "purchaseorder_ids": [ 460000000068231, 460000000068233, {...}, {...} ], "vendor_id": "460000000038029", "vendor_name": "string", "vat_treatment": "string", "vat_reg_no": "string", "source_of_supply": "AP", "destination_of_supply": "TN", "place_of_supply": "DU", "permit_number": "string", "gst_no": "22AAAAA0000A1Z5", "gst_treatment": "business_gst", "tax_treatment": "vat_registered", "is_pre_gst": false, "pricebook_id": 460000000038090, "pricebook_name": "string", "is_reverse_charge_applied": true, "unused_credits_payable_amount": 187, "status": "open", "bill_number": "00454", "date": "2013-09-11", "due_date": "2013-09-26", "payment_terms": 0, "payment_terms_label": "Due on Receipt", "payment_expected_date": "string", "reference_number": "4321133", "recurring_bill_id": "string", "due_by_days": "string", "due_in_days": 0, "currency_id": "460000000000099", "currency_code": "INR", "currency_symbol": "string", "documents": [ { "document_id": 0, "file_name": "string" } ], "price_precision": 2, "exchange_rate": 1.23, "adjustment": 0, "adjustment_description": " ", "custom_fields": [ { "custom_field_id": 0, "index": 0, "label": "string", "value": "string" } ], "is_tds_applied": true, "is_item_level_tax_calc": false, "is_inclusive_tax": false, "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string", "is_abn_quoted": "string", "line_items": [ { "purchaseorder_item_id": "string", "line_item_id": "460000000067009", "item_id": "460000000054135", "sku": "string", "name": "string", "account_id": "460000000000403", "account_name": "Other Expenses", "image_document_id": 460000000038067, "location_id": "460000000038080", "location_name": "string", "reverse_charge_tax_id": 460000000038056, "reverse_charge_tax_name": "inter", "reverse_charge_tax_percentage": 10, "reverse_charge_tax_amount": 100, "description": "string", "bcy_rate": 40, "rate": 10, "tags": [ { "tag_id": "460000000054178", "tag_option_id": "460000000054180" } ], "quantity": 1, "tax_id": "460000000027005", "tds_tax_id": "460000000027009", "tax_treatment_code": "uae_others", "tax_exemption_id": "string", "tax_exemption_code": "string", "tax_name": "VAT (12.5%)", "tax_type": "tax", "tax_percentage": 0, "item_total": 40, "item_total_inclusive_of_tax": 40, "item_order": 1, "unit": "kgs", "product_type": "string", "hsn_or_sac": 80540, "acquisition_vat_id": "string", "acquisition_vat_name": "string", "acquisition_vat_percentage": "string", "acquisition_vat_amount": "string", "reverse_charge_vat_id": "string", "reverse_charge_vat_name": "string", "reverse_charge_vat_percentage": "string", "reverse_charge_vat_amount": "string", "is_billable": false, "customer_id": "string", "customer_name": "string", "project_id": "string", "project_name": "string", "invoice_id": "string", "invoice_number": "string", "item_custom_fields": [ { "custom_field_id": 0, "index": 0, "value": "string", "label": "string" } ] } ], "location_id": "460000000038080", "location_name": "string", "sub_total": 40, "tax_total": 0, "total": 40, "payment_made": 0, "vendor_credits_applied": 0, "is_line_item_invoiced": false, "purchaseorders": [ { "purchaseorder_id": "460000000068231", "purchaseorder_number": "PO-0001", "purchaseorder_date": "19 Jan 2017", "purchaseorder_status": "billed" } ], "taxes": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "acquisition_vat_total": 0.1, "reverse_charge_vat_summary": [ { "tax_name": "VAT (12.5%)", "tax_amount": 1.25 } ], "reverse_charge_vat_total": 0.1, "balance": 40, "billing_address": { "address": "string", "street2": "Suite 310", "city": "string", "state": "string", "zip": "string", "country": "string", "fax": "string", "attention": "string" }, "payments": [ { "payment_id": "460000000042059", "bill_id": "460000000098765", "bill_payment_id": "460000000042061", "payment_mode": "Cash", "payment_number": "string", "description": "string", "date": "2013-09-11", "reference_number": "4321133", "exchange_rate": 1.23, "amount": 31.25, "paid_through_account_id": "460000000000358", "paid_through_account_name": "Undeposited Funds", "is_single_bill_payment": true, "is_paid_via_print_check": false, "check_details": [ { "check_status": "string", "check_number": "string" } ], "is_ach_payment": false, "ach_payment_status": "string", "ach_gw_transaction_id": "string", "filed_in_vat_return_id": "string", "filed_in_vat_return_name": "string", "filed_in_vat_return_type": "string" } ], "vendor_credits": [ { "vendor_credit_id": "4600000053221", "vendor_credit_bill_id": "4600000211221", "vendor_credit_number": "DN-001", "date": "27 Dec 2016", "amount": 10 } ], "created_time": "2013-09-11T17:18:32+0530", "created_by_id": "4600000053001", "last_modified_time": "2013-09-11T17:18:32+0530", "reference_id": "string", "notes": "Thanks for your business.", "terms": "Terms and conditions apply.", "attachment_name": "string", "open_purchaseorders_count": 1 } }