Skip to main content

Create Invoice


Creating a new invoice publishes a payable invoice. To share the created invoice with a customer, send the customer the redirect URL generated in the invoiceInformation.paymentLink response field.

Itemized Invoices: An invoice can display a single billed amount or list up to 30 billed items. To list the billed items in the invoice, include the items in the request using the line item array fields. An invoice with line items is known as an itemized invoice.

Invoice Numbers: You can assign a unique invoice number in the invoiceInformation.invoiceNumber request field. The invoice number is required for follow-on API requests and tracking. You should store the invoice number in your system so that you can optimally perform the follow-on requests. If you do not include a unique invoice number when creating an invoice, generates a unique invoice number for you in the invoiceInformation.invoiceNumber response field.

Installment Payments: Invoices can be paid in installment payments when these fields and values are included in the request. If an invoice is payable in installments, multiple customers can make payments towards the same invoice.

  • Set invoiceInformation.allowPartialPayments to true.
  • Set orderInformation.amountDetails.minimumPartialAmount to the minimum amount allowed for a partial payment.

Partner Information: If your merchant account is associated with a partner, you can include your partner solution ID (PSID) in the request message for tracking and reporting purposes. To include your PSID, use the clientReferenceInformation.partner.solutionId request field and set its field value to your PSID.

A successfully created invoice is indicated by the CREATED status in the status response field. The response message also includes the newly created invoice's details for the new invoice.

Follow-on operations: Send Invoice, Update Invoice, Cancel Invoice, Get Invoice Details, Get Invoices

Create an In-Person Invoice

Endpoint

POST /invoicing/v2/invoices

POST /invoicing/v2/invoices

POST /invoicing/v2/invoices

Example

{  "invoiceInformation": {    "description": "Food",    "dueDate": "2019-07-11",    "sendImmediately": true,    "deliveryMode": "none"  },  "orderInformation": {    "amountDetails": {      "totalAmount": "2623.64",      "currency": "USD"    }  }}
{  "_links": {    "self": {      "href": "/v2/invoices/98761",      "method": "GET"    },    "update": {      "href": "/v2/invoices/98761",      "method": "PUT"    },    "deliver": {      "href": "/v2/invoices/98761/delivery",      "method": "POST"    },    "cancel": {      "href": "/v2/invoices/98761/cancelation",      "method": "POST"    }  },  "id": "98761",  "submitTimeUtc": "2024-08-02T18:39:57.548314337Z",  "status": "CREATED",  "processingInformation": {    "requestPhone": false,    "requestShipping": false  },  "invoiceInformation": {    "invoiceNumber": "98761",    "description": "Food",    "dueDate": "2019-07-11",    "allowPartialPayments": false,    "paymentLink": "/ebc2/invoicing/payInvoice/wzvrzUssiXFLJ2RcJcmbuQEoHSrlcQudy9dL91Jxo8n4VcoRhNWRp8wvVDz8xtlD?version=v2.1",    "deliveryMode": "None"  },  "orderInformation": {    "amountDetails": {      "totalAmount": 2623.64,      "currency": "USD",      "balanceAmount": 2623.64    }  }}

Required Fields

FieldTypeDescription
invoiceInformation.deliveryModestringSet to none.
invoiceInformation.descriptionstringCustomer-facing description of the invoice. Optional when orderInformation.lineItems[] fields are included.
invoiceInformation.dueDatestringThe date payment is due. Format: YYYY-MM-DD.
invoiceInformation.sendImmediatelybooleanSet to true.
orderInformation.amountDetails.currencystringISO 4217 three-letter currency code for the invoice.
orderInformation.amountDetails.totalAmountstringThe total charge amount for the invoice, as a decimal string.

Create an Email Invoice

Endpoint

POST /invoicing/v2/invoices

POST /invoicing/v2/invoices

POST /invoicing/v2/invoices

Required Fields

FieldTypeDescription
customerInformation.emailstringCustomer's email address. The invoice is sent to this address.
customerInformation.namestringCustomer's full name as it appears on the invoice.
invoiceInformation.deliveryModestringSet to none.
invoiceInformation.descriptionstringCustomer-facing description of the invoice. Optional when orderInformation.lineItems[] fields are included.
invoiceInformation.dueDatestringThe date payment is due. Format: YYYY-MM-DD.
invoiceInformation.sendImmediatelybooleanSet to true.
orderInformation.amountDetails.currencystringISO 4217 three-letter currency code for the invoice.
orderInformation.amountDetails.totalAmountstringThe total charge amount for the invoice, as a decimal string.

Create an Itemized Email Invoice

Endpoint

POST /invoicing/v2/invoices

POST /invoicing/v2/invoices

POST /invoicing/v2/invoices

Example

{  "customerInformation": {    "name": "Tanya Lee",    "email": "[email protected]"  },  "invoiceInformation": {    "dueDate": "2019-07-11",    "sendImmediately": true,    "deliveryMode": "none"  },  "orderInformation": {    "amountDetails": {      "totalAmount": 293.5,      "currency": "USD"    },    "lineItems": [      {        "productSku": "P653727383",        "productName": "First line item's name",        "unitPrice": 12.05,        "quantity": 20,        "totalAmount": 241      },      {        "productSku": "P987654321",        "productName": "Second line item's name",        "unitPrice": 5.25,        "quantity": 10,        "totalAmount": 52.5      }    ]  }}
{  "_links": {    "self": {      "href": "/v2/invoices/98766",      "method": "GET"    },    "update": {      "href": "/v2/invoices/98766",      "method": "PUT"    },    "deliver": {      "href": "/v2/invoices/98766/delivery",      "method": "POST"    },    "cancel": {      "href": "/v2/invoices/98766/cancelation",      "method": "POST"    }  },  "id": "98766",  "submitTimeUtc": "2024-08-03T00:02:49.453695409Z",  "status": "CREATED",  "customerInformation": {    "name": "Tanya Lee",    "email": "[email protected]"  },  "processingInformation": {    "requestPhone": false,    "requestShipping": false  },  "invoiceInformation": {    "invoiceNumber": "98766",    "dueDate": "2019-07-11",    "allowPartialPayments": false,    "paymentLink": "/ebc2/invoicing/payInvoice/JBOA7CQeoSFuUluwLqw2c6n8rf0KCO0cgJz19uQmxO9rF5tT8FdNGRTL9OHapjlr?version=v2.1",    "deliveryMode": "None"  },  "orderInformation": {    "amountDetails": {      "totalAmount": 293.5,      "currency": "USD",      "balanceAmount": 293.5    },    "lineItems": [      {        "productSku": "P653727383",        "productName": "First line item's name",        "unitPrice": 12.05,        "quantity": 20,        "totalAmount": 241      },      {        "productSku": "P987654321",        "productName": "Second line item's name",        "unitPrice": 5.25,        "quantity": 10,        "totalAmount": 52.5      }    ]  }}

Required Fields

FieldTypeDescription
customerInformation.emailstringCustomer's email address. The invoice is sent to this address.
customerInformation.namestringCustomer's full name as it appears on the invoice.
invoiceInformation.deliveryModestringSet to none.
invoiceInformation.dueDatestringThe date payment is due. Format: YYYY-MM-DD.
invoiceInformation.sendImmediatelybooleanSet to true.
orderInformation.amountDetails.currencystringISO 4217 three-letter currency code for the invoice.
orderInformation.amountDetails.totalAmountstringThe total charge amount for the invoice, as a decimal string.
orderInformation.lineItems[].productNamestringRequired for each item listed in the invoice.
orderInformation.lineItems[].productSkustringRequired for each item listed in the invoice.
orderInformation.lineItems[].quantityintegerRequired for each item listed in the invoice.
orderInformation.lineItems[].totalAmountnumberRequired for each item listed in the invoice.
orderInformation.lineItems[].unitPricenumberRequired for each item listed in the invoice.

Optional Fields

You can include these optional fields when sending create invoice requests:

Optional Fields
FieldTypeDescription
clientReferenceInformation.partner.developerIdstringSet to your developer ID.
clientReferenceInformation.partner.solutionIdstringSet to your partner solution ID (PSID).
customerInformation.company.namestringCustomer's company name as it appears on the invoice.
customerInformation.emailstringCustomer's email address.
customerInformation.merchantCustomerIdstringIdentifier for this customer in the merchant system.
customerInformation.namestringCustomer's full name as it appears on the invoice.
invoiceInformation.allowPartialPaymentsbooleanSet to false if the invoice must be paid in a single payment, or true if the invoice is payable in installments.
invoiceInformation.deliveryModestringSet to email to email the invoice to the customer, or none to create a payable link without sending an email.
invoiceInformation.descriptionstringThis field is optional when the line item fields are present in the request message.
invoiceInformation.expirationDatestringSet to the expiration date (format: YYYY-MM-DD). The invoice expires on this date at 00:00 UTC.
invoiceInformation.invoiceNumberstringSet to a unique number to create an invoice number. If you do not include this field and a unique value, the invoicing API automatically generates an invoice number for the new invoice. This invoice number cannot be updated after sending the API request.
merchantDefinedFieldValues.definition id[].valuestringValue for a merchant-defined custom field.
orderInformation.amountDetails.freight.amountnumberFreight or shipping amount added to the invoice total.
orderInformation.amountDetails.freight.taxablebooleanSet to true if freight is subject to tax.
orderInformation.amountDetails.freight.taxRatenumberTax rate applied to the freight amount.
orderInformation.amountDetails.minimumPartialAmountnumberThe minimum amount allowed for a single installment payment. Only applies when allowPartialPayments is true.
orderInformation.amountDetails.subAmountnumberThe subtotal before discounts or tax adjustments.

Last published: September 29, 2026