Skip to main content
An invoice is a payment request you send to a customer for goods or services delivered. In the PayPal Invoicing API, invoices flow through a lifecycle: created as 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

{
  "id": "INV2-XXXX-XXXX-XXXX",
  "status": "DRAFT",
  "detail": {
    "currency_code": "GBP",
    "invoice_number": "INV-0001"
  },
  "invoicer": {
    "email_address": "merchant@example.com"
  },
  "primary_recipients": [
    {
      "billing_info": {
        "email_address": "customer@example.com"
      }
    }
  ],
  "items": [
    {
      "name": "Consulting",
      "quantity": "1",
      "unit_amount": {
        "currency_code": "GBP",
        "value": "100.00"
      }
    }
  ]
}

Complex

{
  "id": "INV2-XXXX-XXXX-XXXX-XXXX",
  "detail": {
    "invoice_number": "INV-2026-0089",
    "reference": "SOW-2026-003",
    "invoice_date": "2026-03-15",
    "due_date": "2026-03-29",
    "currency_code": "USD",
    "note": "Thank you for working with us. Please don't hesitate to reach out with any questions.",
    "memo": "Internal ref: Q1 closeout — Acct Manager: TJ — Client tier: Enterprise",
    "term": "Payment due within 14 days of invoice date. Late payments subject to a 1.5% monthly fee.",
    "payment_term": {
      "term_type": "NET_14"
    },
    "metadata": {
      "create_time": "2026-03-15T10:30:45Z",
      "update_time": "2026-03-15T10:30:45Z",
      "recipient_view_url": "https://www.paypal.com/invoice/view/...",
      "first_sent_time": "2026-03-15T11:00:00Z"
    }
  },
  "invoicer": {
    "name": {
      "given_name": "Taylor",
      "surname": "Brooks"
    },
    "email_address": "taylor@brooksdesign.com",
    "business_name": "Brooks Design Studio",
    "address": {
      "address_line_1": "450 Market Street",
      "address_line_2": "Suite 800",
      "admin_area_2": "San Francisco",
      "admin_area_1": "CA",
      "postal_code": "94105",
      "country_code": "US"
    },
    "phones": [
      {
        "country_code": "1",
        "national_number": "4155550192",
        "phone_type": "MOBILE"
      }
    ],
    "website": "https://brooksdesign.com"
  },
  "primary_recipients": [
    {
      "billing_info": {
        "name": {
          "given_name": "Jordan",
          "surname": "Kim"
        },
        "business_name": "Kim & Associates LLC",
        "email_address": "jordan@kimassociates.com",
        "address": {
          "address_line_1": "450 Market Street",
          "address_line_2": "Suite 800",
          "admin_area_2": "San Francisco",
          "admin_area_1": "CA",
          "postal_code": "94105",
          "country_code": "US"
        }
      }
    }
  ],
  "items": [
    {
      "name": "UX Design — Discovery & Research",
      "description": "User interviews, competitive analysis, journey mapping",
      "quantity": "12",
      "unit_amount": {
        "currency_code": "USD",
        "value": "150.00"
      },
      "unit_of_measure": "HOURS",
      "tax": {
        "name": "Sales Tax",
        "percent": "8.5"
      }
    },
    {
      "name": "UX Design — Wireframing & Prototyping",
      "description": "Low and high-fidelity wireframes, interactive prototype",
      "quantity": "18",
      "unit_amount": {
        "currency_code": "USD",
        "value": "150.00"
      },
      "unit_of_measure": "HOURS",
      "tax": {
        "name": "Sales Tax",
        "percent": "8.5"
      }
    }
  ],
  "configuration": {
    "allow_tip": true,
    "partial_payment": {
      "allow_partial_payment": true,
      "minimum_amount_due": {
        "currency_code": "USD",
        "value": "500.00"
      }
    },
    "tax_calculated_after_discount": true,
    "tax_inclusive": false
  },
  "amount": {
    "breakdown": {
      "items_total": {
        "currency_code": "USD",
        "value": "4500.00"
      },
      "tax_total": {
        "currency_code": "USD",
        "value": "382.50"
      }
    },
    "total_amount": {
      "currency_code": "USD",
      "value": "4882.50"
    }
  },
  "status": "SENT",
  "payment_summary": {
    "paid_amount": {
      "currency_code": "USD",
      "value": "0.00"
    },
    "outstanding_balance": {
      "currency_code": "USD",
      "value": "4882.50"
    }
  }
}

Object schema

The following tables document the top-level fields in the invoice object, along with the fields in each nested object.
FieldTypeRequiredDescription
idstringRead-onlyThe unique PayPal-generated invoice ID (INV2-XXXX-XXXX-XXXX-XXXX).
statusstringRead-onlyThe 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.
detailobjectRequiredCore invoice details including invoice number, date, currency, and payment terms. See detail for more information.
invoicerobjectOptionalThe business information of the invoice sender. See invoicer for more information.
primary_recipientsarrayOptionalThe billing and shipping information for the invoice recipients. Up to 100 recipients. See primary_recipients for more information.
additional_recipientsarrayOptionalAn array of CC email addresses to receive invoice notifications. Up to 100 addresses.
itemsarrayOptionalThe line items on the invoice. Up to 100 items. See items for more information.
configurationobjectOptionalInvoice configuration options including partial payment, tips, and tax settings. See configuration for more information.
amountobjectRead-onlyThe computed invoice amount summary including totals, tax, discounts, and shipping. See amount for more information.
due_amountobjectRead-onlyThe amount outstanding on the invoice. Contains currency_code and value.
gratuityobjectRead-onlyThe tip amount added by the payer. Contains currency_code and value.
paymentsobjectRead-onlyPayments recorded against the invoice. See payments for more information.
refundsobjectRead-onlyRefunds recorded against the invoice. See refunds for more information.
linksarrayRead-onlyHATEOAS 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.
FieldTypeRequiredDescription
invoice_numberstringOptionalA merchant-defined invoice number. Max 25 characters. If omitted, PayPal auto-generates one.
invoice_datestringOptionalThe invoice date in YYYY-MM-DD format. Defaults to the date the invoice is created.
currency_codestringRequiredThe three-character ISO-4217 currency code, for example, USD, GBP.
referencestringOptionalA merchant-defined reference identifier, for example, a purchase order number. Max 120 characters.
payment_termobjectOptionalThe payment due terms. Contains term_type, for example, NET_10, NET_30, DUE_ON_DATE_SPECIFIED, and due_date.
notestringOptionalA note to the recipient. Visible on the invoice. Max 4,000 characters.
terms_and_conditionsstringOptionalThe terms and conditions of the invoice. Max 4,000 characters.
memostringOptionalA memo for internal use. Not visible to the recipient. Max 500 characters.
attachmentsarrayOptionalFile references to attach to the invoice.
metadataobjectRead-onlyAudit data including create_time, last_update_time, recipient_view_url, and invoicer_view_url.

invoicer

The sender’s business information displayed on the invoice.
FieldTypeRequiredDescription
email_addressstringOptionalThe invoicer’s email address. Must match the email of the PayPal business account associated with the access token.
nameobjectOptionalThe invoicer’s name. Contains given_name and surname.
addressobjectOptionalThe invoicer’s address. Contains address_line_1, address_line_2, admin_area_1, admin_area_2, postal_code, and country_code.
phonesarrayOptionalThe invoicer’s phone numbers. Each entry contains country_code, national_number, and phone_type, for example, MOBILE, HOME, WORK.
websitestringOptionalThe invoicer’s website URL. Max 2,048 characters.
tax_idstringOptionalThe invoicer’s tax ID.
logo_urlstringOptionalThe URL of a logo to display on the invoice. Must be HTTPS. Max 2,000 characters.
additional_notesstringOptionalAdditional notes about the invoicer. Max 40 characters.

primary_recipients

An array of recipient objects. Each entry contains a billing_info object and optionally a shipping_info object.

billing_info

FieldTypeRequiredDescription
email_addressstringOptionalThe recipient’s email address. PayPal sends the invoice notification to this address.
nameobjectOptionalThe recipient’s name. Contains given_name and surname.
addressobjectOptionalThe recipient’s billing address. Same structure as invoicer.address.
phonesarrayOptionalThe recipient’s phone numbers. Same structure as invoicer.phones.
additional_info_valuestringOptionalA free-text field for additional recipient information, for example, account number. Max 40 characters.

shipping_info

FieldTypeRequiredDescription
nameobjectOptionalThe recipient’s name for shipping. Contains given_name and surname.
addressobjectOptionalThe shipping destination address. Same structure as invoicer.address.

items

An array of line items on the invoice. Each item contains the following fields.
FieldTypeRequiredDescription
namestringRequiredThe item name. Max 200 characters.
descriptionstringOptionalA description of the item. Max 1,000 characters.
quantitystringRequiredThe quantity of the item. Supports decimals, for example, "2.5".
unit_amountobjectRequiredThe price per unit. Contains currency_code and value.
taxobjectOptionalTax applied to this item. Contains name, percent, and a computed amount.
discountobjectOptionalDiscount applied to this item. Contains either percent or a fixed amount.
item_datestringOptionalThe date the item or service was provided. Format: YYYY-MM-DD.
unit_of_measurestringOptionalThe unit of measure for the item. Values: QUANTITY, HOURS, AMOUNT.

configuration

Options that control invoice behavior and payment rules.
FieldTypeRequiredDescription
partial_paymentobjectOptionalPartial payment settings. Contains allow_partial_payment and minimum_amount_due.
allow_tipbooleanOptionalIf true, the payer can add a tip when paying. Default: false.
tax_calculated_after_discountbooleanOptionalIf true, tax is calculated on the post-discount amount. Default: false.
tax_inclusivebooleanOptionalIf true, the unit amounts already include tax. Default: false.
template_idstringOptionalThe 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.
FieldTypeDescription
currency_codestringThe invoice currency.
valuestringThe total invoice amount.
breakdownobjectA detailed breakdown of the total.
breakdown.item_totalobjectThe subtotal of all line items before tax or discount.
breakdown.discountobjectThe total discount applied. Contains item_discount and invoice_discount.
breakdown.tax_totalobjectThe total tax applied across all items and shipping.
breakdown.shippingobjectThe shipping amount and any associated tax.
breakdown.customobjectA custom line item, for example, packing charges. Contains label and amount.

payments

A read-only record of payments made against the invoice.
FieldTypeDescription
paid_amountobjectThe total amount paid so far. Contains currency_code and value.
transactionsarrayAn 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.
FieldTypeDescription
refund_amountobjectThe total amount refunded so far. Contains currency_code and value.
transactionsarrayAn 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.