DRAFT, sent to customers, tracked through payment states (UNPAID, PARTIALLY_PAID, PAID), and optionally refunded.
The invoice object represents a complete invoice including sender and recipient details, line items, amounts, payment configuration, and status. You receive this object when you create, send, or fetch an invoice.
Sample invoice objects
The following examples show a simple and complex invoice object.Simple
Complex
Object schema
The following tables document the top-level fields in the invoice object, along with the fields in each nested object.| Field | Type | Required | Description |
|---|---|---|---|
id | string | Read-only | The unique PayPal-generated invoice ID (INV2-XXXX-XXXX-XXXX-XXXX). |
status | string | Read-only | The current status of the invoice. Values: DRAFT, SENT, SCHEDULED, PAID, MARKED_AS_PAID, CANCELLED, REFUNDED, PARTIALLY_PAID, PARTIALLY_REFUNDED, MARKED_AS_REFUNDED, UNPAID, PAYMENT_PENDING. |
detail | object | Required | Core invoice details including invoice number, date, currency, and payment terms. See detail for more information. |
invoicer | object | Optional | The business information of the invoice sender. See invoicer for more information. |
primary_recipients | array | Optional | The billing and shipping information for the invoice recipients. Up to 100 recipients. See primary_recipients for more information. |
additional_recipients | array | Optional | An array of CC email addresses to receive invoice notifications. Up to 100 addresses. |
items | array | Optional | The line items on the invoice. Up to 100 items. See items for more information. |
configuration | object | Optional | Invoice configuration options including partial payment, tips, and tax settings. See configuration for more information. |
amount | object | Read-only | The computed invoice amount summary including totals, tax, discounts, and shipping. See amount for more information. |
due_amount | object | Read-only | The amount outstanding on the invoice. Contains currency_code and value. |
gratuity | object | Read-only | The tip amount added by the payer. Contains currency_code and value. |
payments | object | Read-only | Payments recorded against the invoice. See payments for more information. |
refunds | object | Read-only | Refunds recorded against the invoice. See refunds for more information. |
links | array | Read-only | HATEOAS links for available actions on the invoice, for example, send, replace, delete, qr-code. |
detail
This is core invoice metadata that is required when creating an invoice.| Field | Type | Required | Description |
|---|---|---|---|
invoice_number | string | Optional | A merchant-defined invoice number. Max 25 characters. If omitted, PayPal auto-generates one. |
invoice_date | string | Optional | The invoice date in YYYY-MM-DD format. Defaults to the date the invoice is created. |
currency_code | string | Required | The three-character ISO-4217 currency code, for example, USD, GBP. |
reference | string | Optional | A merchant-defined reference identifier, for example, a purchase order number. Max 120 characters. |
payment_term | object | Optional | The payment due terms. Contains term_type, for example, NET_10, NET_30, DUE_ON_DATE_SPECIFIED, and due_date. |
note | string | Optional | A note to the recipient. Visible on the invoice. Max 4,000 characters. |
terms_and_conditions | string | Optional | The terms and conditions of the invoice. Max 4,000 characters. |
memo | string | Optional | A memo for internal use. Not visible to the recipient. Max 500 characters. |
attachments | array | Optional | File references to attach to the invoice. |
metadata | object | Read-only | Audit data including create_time, last_update_time, recipient_view_url, and invoicer_view_url. |
invoicer
The sender’s business information displayed on the invoice.| Field | Type | Required | Description |
|---|---|---|---|
email_address | string | Optional | The invoicer’s email address. Must match the email of the PayPal business account associated with the access token. |
name | object | Optional | The invoicer’s name. Contains given_name and surname. |
address | object | Optional | The invoicer’s address. Contains address_line_1, address_line_2, admin_area_1, admin_area_2, postal_code, and country_code. |
phones | array | Optional | The invoicer’s phone numbers. Each entry contains country_code, national_number, and phone_type, for example, MOBILE, HOME, WORK. |
website | string | Optional | The invoicer’s website URL. Max 2,048 characters. |
tax_id | string | Optional | The invoicer’s tax ID. |
logo_url | string | Optional | The URL of a logo to display on the invoice. Must be HTTPS. Max 2,000 characters. |
additional_notes | string | Optional | Additional notes about the invoicer. Max 40 characters. |
primary_recipients
An array of recipient objects. Each entry contains abilling_info object and optionally a shipping_info object.
billing_info
| Field | Type | Required | Description |
|---|---|---|---|
email_address | string | Optional | The recipient’s email address. PayPal sends the invoice notification to this address. |
name | object | Optional | The recipient’s name. Contains given_name and surname. |
address | object | Optional | The recipient’s billing address. Same structure as invoicer.address. |
phones | array | Optional | The recipient’s phone numbers. Same structure as invoicer.phones. |
additional_info_value | string | Optional | A free-text field for additional recipient information, for example, account number. Max 40 characters. |
shipping_info
| Field | Type | Required | Description |
|---|---|---|---|
name | object | Optional | The recipient’s name for shipping. Contains given_name and surname. |
address | object | Optional | The shipping destination address. Same structure as invoicer.address. |
items
An array of line items on the invoice. Each item contains the following fields.| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | The item name. Max 200 characters. |
description | string | Optional | A description of the item. Max 1,000 characters. |
quantity | string | Required | The quantity of the item. Supports decimals, for example, "2.5". |
unit_amount | object | Required | The price per unit. Contains currency_code and value. |
tax | object | Optional | Tax applied to this item. Contains name, percent, and a computed amount. |
discount | object | Optional | Discount applied to this item. Contains either percent or a fixed amount. |
item_date | string | Optional | The date the item or service was provided. Format: YYYY-MM-DD. |
unit_of_measure | string | Optional | The unit of measure for the item. Values: QUANTITY, HOURS, AMOUNT. |
configuration
Options that control invoice behavior and payment rules.| Field | Type | Required | Description |
|---|---|---|---|
partial_payment | object | Optional | Partial payment settings. Contains allow_partial_payment and minimum_amount_due. |
allow_tip | boolean | Optional | If true, the payer can add a tip when paying. Default: false. |
tax_calculated_after_discount | boolean | Optional | If true, tax is calculated on the post-discount amount. Default: false. |
tax_inclusive | boolean | Optional | If true, the unit amounts already include tax. Default: false. |
template_id | string | Optional | The ID of a saved template to associate with this invoice. Doesn’t auto-populate template data. |
amount
A read-only computed summary of the invoice total. PayPal populates this based on items and configuration.| Field | Type | Description |
|---|---|---|
currency_code | string | The invoice currency. |
value | string | The total invoice amount. |
breakdown | object | A detailed breakdown of the total. |
breakdown.item_total | object | The subtotal of all line items before tax or discount. |
breakdown.discount | object | The total discount applied. Contains item_discount and invoice_discount. |
breakdown.tax_total | object | The total tax applied across all items and shipping. |
breakdown.shipping | object | The shipping amount and any associated tax. |
breakdown.custom | object | A custom line item, for example, packing charges. Contains label and amount. |
payments
A read-only record of payments made against the invoice.| Field | Type | Description |
|---|---|---|
paid_amount | object | The total amount paid so far. Contains currency_code and value. |
transactions | array | An array of individual payment records. Each contains payment_id, method, payment_date, note, and amount. |
refunds
A read-only record of refunds issued against the invoice.| Field | Type | Description |
|---|---|---|
refund_amount | object | The total amount refunded so far. Contains currency_code and value. |
transactions | array | An array of individual refund records. Each contains refund_id, method, refund_date, and amount. |
Quick start using Invoicing API
Create and send your first invoice using the PayPal Invoicing API.
Reference
Explore the full schema definitions and interactive examples for the PayPal Invoicing API.