---
title: "Create sales invoice"
method: POST
path: "/v2/sales-invoices"
tags: ["Sales Invoices API"]
---

# Create sales invoice

`POST /v2/sales-invoices`

With the Sales Invoice API you can generate sales invoices to send to your customers.

## Headers

- `idempotency-key` string

## Request body

- SalesInvoiceRequest
  - `resource` string — Indicates the response contains a sales invoice object. Will always contain the string `sales-invoice` for this endpoint.
  - `id` string
  - `mode` 'live' | 'test' — Whether this entity was created in live mode or in test mode.
  - `testmode` boolean, nullable — Whether to create the entity in test mode or live mode. Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
  - `invoiceNumber` string, nullable — When issued, an invoice number will be set for the sales invoice.
  - `profileId` string, nullable — The identifier referring to the [profile](get-profile) this entity belongs to. Most API credentials are linked to a single profile. In these cases the `profileId` must not be sent in the creation request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is required.
  - `status` 'draft' | 'issued' | 'paid', required — The status for the invoice to end up in. A `draft` invoice is not paid or not sent and can be updated after creation. Setting it to `issued` sends it to the recipient so they may then pay through our payment system. To skip our payment process, set this to `paid` to mark it as paid. It can then subsequently be sent as well, same as with `issued`. Dependent parameters: - `paymentDetails` is required if invoice should be set directly to `paid` - `customerId` and `mandateId` are required if a recurring payment should be used to set the invoice to `paid` - `emailDetails` optional for `issued` and `paid` to send the invoice by email
  - `eInvoiceStatus` 'issuing' | 'issued' | 'failed' — The e-invoice submission status for the invoice, if it was configured to be an e-invoice.
  - `vatScheme` 'standard' | 'one-stop-shop' — The VAT scheme to create the invoice for. You must be enrolled with One Stop Shop enabled to use it.
  - `vatMode` 'exclusive' | 'inclusive' — The VAT mode to use for VAT calculation. `exclusive` mode means we will apply the relevant VAT on top of the price. `inclusive` means the prices you are providing to us already contain the VAT you want to apply.
  - `memo` string, nullable — A free-form memo you can set on the invoice, and will be shown on the invoice PDF.
  - `metadata` object, nullable — Provide any data you like as a JSON object. We will save the data alongside the entity. Whenever you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB.
  - `paymentTerm` '7 days' | '14 days' | '30 days' | '45 days' | '60 days' | '90 days' | '120 days', nullable — The payment term to be set on the invoice.
  - `paymentDetails` object — Used when setting an invoice to status of `paid`, and will store a payment that fully pays the invoice with the provided details. Required for `paid` status.
    - `source` 'manual' | 'payment-link' | 'payment', required — The way through which the invoice is to be set to paid.
    - `sourceReference` string, nullable — A reference to the payment the sales invoice is paid by. Required for `source` values `payment-link` and `payment`.
  - `emailDetails` SalesInvoiceEmailDetails, nullable
    - `subject` string, required — The subject of the email to be sent.
    - `body` string, required — The body of the email to be sent. To add newline characters, you can use `\n`.
  - `customerId` string — The identifier referring to the [customer](get-customer) you want to attempt an automated payment for. If provided, `mandateId` becomes required as well. Only allowed for invoices with status `paid`.
  - `mandateId` string — The identifier referring to the [mandate](get-mandate) you want to use for the automated payment. If provided, `customerId` becomes required as well. Only allowed for invoices with status `paid`.
  - `recipientIdentifier` string, required — An identifier tied to the recipient data. This should be a unique value based on data your system contains, so that both you and us know who we're referring to. It is a value you provide to us so that recipient management is not required to send a first invoice to a recipient.
  - `recipient` SalesInvoiceRecipient, nullable, required
    - `type` 'consumer' | 'business', required — The type of recipient, either `consumer` or `business`. This will determine what further fields are required on the `recipient` object.
    - `title` string, nullable — The title of the `consumer` type recipient, for example Mr. or Mrs..
    - `givenName` string, nullable — The given name (first name) of the `consumer` type recipient should be at least two characters and cannot contain only numbers.
    - `familyName` string, nullable — The given name (last name) of the `consumer` type recipient should be at least two characters and cannot contain only numbers.
    - `organizationName` string, nullable — The trading name of the `business` type recipient.
    - `organizationNumber` string, nullable — The Chamber of Commerce number of the organization for a `business` type recipient. Either this or `vatNumber` has to be provided.
    - `vatNumber` string, nullable — The VAT number of the organization for a `business` type recipient. Either this or `organizationNumber` has to be provided.
    - `email` string, required — The email address of the recipient. If the domain contains non-ASCII characters, encode it as Punycode per [RFC 3492](https://www.rfc-editor.org/rfc/rfc3492).
    - `phone` string, nullable — The phone number of the recipient.
    - `streetAndNumber` string, required — A street and street number.
    - `streetAdditional` string, nullable — Any additional addressing details, for example an apartment number.
    - `postalCode` string, required — A postal code.
    - `city` string, required — The recipient's city.
    - `region` string, nullable — The recipient's region.
    - `country` string, required — A country code in [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
    - `locale` 'en_US' | 'en_GB' | 'nl_NL' | 'nl_BE' | 'de_DE' | 'de_AT' | 'de_CH' | 'fr_FR' | 'fr_BE', required — The locale for the recipient, to be used for translations in PDF generation and payment pages.
  - `lines` SalesInvoiceLineItem[], nullable, required — Provide the line items for the invoice. Each line contains details such as a description of the item ordered and its price. All lines must have the same currency as the invoice.
    - `description` string, required — A description of the line item. For example *LEGO 4440 Forest Police Station*.
    - `quantity` integer, required — The number of items.
    - `vatRate` string, required — The vat rate to be applied to this line item.
    - `unitPrice` Amount, required — In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field.
      - `currency` string, required — A three-character ISO 4217 currency code.
      - `value` string, required — A string containing an exact monetary amount in the given currency.
    - `discount` SalesInvoiceDiscount, nullable
      - `type` 'amount' | 'percentage', required — The type of discount.
      - `value` string, required — A string containing an exact monetary amount in the given currency, or the percentage.
  - `discount` SalesInvoiceDiscount, nullable
    - `type` 'amount' | 'percentage', required — The type of discount.
    - `value` string, required — A string containing an exact monetary amount in the given currency, or the percentage.
  - `isEInvoice` boolean — This indicates whether the invoice is an e-invoice. The default value is `false` and can't be changed after the invoice has been issued. When `emailDetails` is provided, an additional email is sent to the recipient. E-invoicing is only available for merchants based in Belgium, Germany, and the Netherlands, and only when the recipient is also located in one of these countries.
  - `amountDue` object — The amount that is left to be paid.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `subtotalAmount` object — The total amount without VAT before discounts.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `totalAmount` object — The total amount with VAT.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `totalVatAmount` object — The total VAT amount.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `discountedSubtotalAmount` object — The total amount without VAT after discounts.
    - `currency` string, required — A three-character ISO 4217 currency code.
    - `value` string, required — A string containing an exact monetary amount in the given currency.
  - `createdAt` string — The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `issuedAt` string, nullable — If issued, the date when the sales invoice was issued, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `paidAt` string, nullable — If paid, the date when the sales invoice was paid, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `dueAt` string, nullable — If issued, the date when the sales invoice payment is due, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  - `_links` object — An object with several relevant URLs. Every URL object will contain an `href` and a `type` field.
    - `self` Url — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `invoicePayment` Url — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `pdfLink` Url — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `documentation` Url — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `next` Url — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.
    - `previous` Url — In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.
      - `href` string, required — The actual URL string.
      - `type` string, required — The content type of the page or endpoint the URL points to.

## Response `201`

The newly created invoice object. For a complete reference of the invoice object, refer to the
[Get sales invoice endpoint](get-sales-invoice) documentation.

## Other responses

- `404` — No entity with this ID exists.
- `422` — The request contains issues. For example, if the invoice currency is missing.
- `429` — Rate Limit has been reached.

---

[API](https://skmtc.net/mollie/apis/mollie-api.md) · [All operations](https://skmtc.net/mollie/apis/mollie-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mollie/mollie-api/revisions/d2a3bd80c1fa/schema)
