1. Introduction #
This guide provides step-by-step instructions for installing and configuring the Peppol Invoicing managed package for Salesforce. This package enables you to send Peppol-compliant invoices directly from Salesforce, leveraging the power of PDF Butler.
Prerequisites #
Before you begin, please ensure you have the following:
- Salesforce System Administrator access.
- The PDF Butler managed package must be installed in your org before you install Peppol Invoicing. Package link will be provided by PDF Butler support.
- Credentials: login and password for the Peppol App, provided by PDF Butler Support.
- Your unique Company ID and Receiver ID, provided by PDF Butler Support.
2. Installation & Initial Setup #
2.1. Install the Managed Package #
- Copy the following installation link into your browser, for example: https://login.salesforce.com/packaging/installPackage.apexp?p0=04td10000003jgZ
- Log in to your target Salesforce org.
- Select an installation option, such as Install for Admins Only or Install for All Users.
- Click Install.
- Once the installation is complete, proceed to the post-install setup.
2.2. Register the Package #
You must register the package with your provided credentials to activate the service.
- From the Salesforce App Launcher, find and open the Peppol Admin
- Ask PDF Butler Support to provide the login and password for the App.
- Enter your credentials into the fields provided:
#
- Click the Check Credentials
- A success message will be displayed, confirming the registration.

3. Core Configuration #
3.1. Assign Permissions #
1.In Salesforce Setup, use the Quick Find box to search for Permission Sets.
2. Find and click the PEPPOL Butler Admin permission set.
3. Click the Manage Assignments button.
4. Assign this permission set to the API user (or administrative user) responsible for the registration and Peppol API processing.
(For more information, see Salesforce Help: Assign Permission Sets to Users)
4. PDF Butler Document Configuration #
This section covers setting up the PDF Butler components to generate the invoice document.
4.1. Create the Doc Config Record #
- From the Salesforce App Launcher, find and open the PDF Butler
- Open the Doc Config tab and click New.
- Create a new Doc Config record with the following details:
- Name: Peppol Invoice (or a name of your choice)
- Record Type: Main Word Document
- Delivery Option: Base64
4.2. Configure Data Sources & Template #
- Navigate to the Data Sources related list on the Doc Config record you just created.
- Create the Data Sources needed to generate your PDF document from your Invoice record (or other Salesforce object).
- (For more information, see PDF Butler Academy: How to set up Data Sources)
- On the Doc Config record page, find the Custom Links section and click Open PDF Butler.
- Configure your document template, mapping your Salesforce object fields to the placeholders in the document.
- (For more information, see PDF Butler Academy: How to map Salesforce fields)
5. PDF Butler Pack & Actionable Setup #
The PDF Butler Pack bundles the Doc Config with the Peppol “Actionable,” which triggers the process.
5.1. Create the PDF Butler Pack #
- In the PDF Butler app, open the PDF Butler Packs
- Click New to create a new Pack record.
- Name: Peppol Invoice Pack (or a name of your choice)
- Leading Doc Config: Select the Peppol Invoice Doc Config record you created in step 4.1.
5.2. Create the Peppol Actionable #
- Assign ‘Peppol’ page latyout for the Actionable.Peppol Record Type. So, Admins can see all the Peppol fields on the Actionable when set Peppol record type:
a. Go to Setup -> Object Manager and Open Actionable object (cadmus_core__Actionable__c) -> Page Layouts and click ‘Page Layout Assignments’ button in the top right corner of the page.
b. Locate ‘Peppol’ record type. Then click ‘Edit Asignment’ and change a default to ‘Peppol’ page layout. Save changes. - Navigate to the Actionables related list on the Pack record you just created.
- Click New to create a new Actionable record:
- Name: Enter a descriptive name (e.g., Send Peppol Invoice)
- Record Type: Peppol (This record type is added by the Peppol Invoicing package)
- Class Name: cadmus_peppol.Peppol_ProcessInvoice
- Flow API Name: Enter the API name of the custom Flow you will configure in the next section (e.g., Peppol_Invoice_JSON_Mapper). This Flow is called by the actionable and is required to map your Salesforce Invoice data into the Peppol Invoice Payload.

6. Salesforce Record Page Setup #
Add the PDF Butler component to your Invoice record page to allow users to generate and send the invoice.
- Navigate to one of your Invoice records (or another Salesforce object page you are using, like Opportunity).
- Click the Setup Gear Icon (⚙️) in the top-right corner and select Edit Page.
- From the component list on the left, find and drag the PDF Butler Previewer component onto your page layout.
- In the component’s properties panel on the right, configure the following:
- Doc Config Id: Enter the Salesforce ID of your Doc Config record (from step 4.1).
- Pack Id: Enter the Salesforce ID of your PDF Butler Pack record (from step 5.1).

Tip: You can get these IDs by navigating to the records in Salesforce and copying the 18-character ID from the URL (e.g., …/a0A8d00000A…).
- Save and Activate the page.
7. Flow Configuration (Data Mapping) #
This Autolaunched Flow is the most critical part of the setup. It maps your Salesforce data to the Peppol_Invoice object, which is then sent to the API.
7.1. Create the Flow #
- Go to Salesforce Setup -> Flows.
- Click New Flow and select Autolaunched Flow (No Trigger).

7.2. Then in the Flow create the ‘recordId’ Input Variable: #
When a user clicks “Send Invoice” in the PDF Butler Previewer, the actionable passes the current Record ID into this Flow.
- In the Flow’s Toolbox, click New Resource.
- Create a new Variable with the following properties:
- API Name: recordId (This must be the exact name)
- Data Type: Text
- Available for Input: Checked (true)

7.3. Get Salesforce Records #
- Add a Get Records element to the Flow.
- Use this element to retrieve your Salesforce Invoice record (and any related records, like Products or Contacts) using the recordId variable from the previous step.

3. Here Invoice Object in Salesforce has relationships (lookups) to Salesforce standard objects:
a. Account – we get customer data, like Billing Address.
b. Opporunity with Opportunity Products – we use as Invoice product lines.
Used Get Records Flow Component to retrieve these Related Objects:

7.4. Map Salesforce Data to the Peppol_Invoice Variable #
- In the Flow’s Toolbox, click New Resource.
- Create a new Variable with these properties:
- API Name: Peppol_Invoice_Variable (or a name of your choice)
- Data Type: Apex-Defined
- Apex Class: cadmus_peppol.Peppol_Invoice
- Make it available for Output.

- Add an Assignment element to the Flow to map data from your Salesforce records (from step 7.3) to the Peppol_Invoice_Variable.
Mapping Salesforce Record and Static Values to Peppol Invoice #
The table below (see Apendix 1) details all properties of the cadmus_peppol__Peppol_Invoice object that must be set to create a valid Peppol Invoice. You will need to map all the requred properties to process Peppol Invoice sucessfully.
For all the Peppol Invoice variables from the table (Apendix 1) we will use Flow Assignment component. Some items can be assiged to static or (hardcoded values) otherwise you want to assign Salesforce Data – Object Records Fields. Let’s see an example how to do it step by step:
- Map Invoice. Refer to the first table in the Apendix 1 – Top Level Invoice fields. In the first column Apex-Defined Variable (FLOW) – you can see all the variables you can populate with Salesforce Data.

- Invoice Number. Below you can see the mapping (first variable). Under Variable field select Peppol_Invoice Apex-Defined variable you’ve created in previous step. Then you can see all the object properties, like INVOICE_NUMBER. Select this property.

{!Peppol_Invoice.INVOICE_NUMBER} equals {!InvoiceNumber},
– Where InvoiceNumber variable is a Flow formula to generate unique Invoice Name from the datetime: “BE25” & TEXT(DATETIMEVALUE(({!$System.OriginDateTime})))
In this way, InvoiceNumber Flow variable (can be a record field) is mapped into Peppol_Invoice.INVOICE_NUMBER object property.
- Invoice Issue Date. In this case we map Opportunity.CloseDate (from GetRelatedObjects component):
{!Peppol_Invoice.INVOICE_ISSUE_DATE} equals {!GetRelatedObjects.CloseDate}
- Invoice Amount. Other properties can be mapped from the Invoice or related records query result:
{!Peppol_Invoice.TOTAL_AMOUNT_TO_PAY} equals {!Get_Invoice.Amount__c}
2. Map Invoice Supplier (Sender). Refer to the second table in the Apendix 1 – Supplier Fields. In the first column Apex-Defined Variable (FLOW) – you can see all the variables you can populate with Salesforce Data for Invoice Supplier Object:

- {!Peppol_Invoice.SUPPLIER.SENDER_NAME} equals ‘SuplierTradingName BV’ – to assign just a static text value.
- {!Peppol_Invoice.SUPPLIER.SENDER_CONTACT_EMAIL} equals {!GetRelatedObjects.Account.Invoice_Email__c} – to assign custom email field from related Account.
3. Follow this approach to assign other properties:

4.Mapping Collections – Invoice Product Lines.
- To map collections like invoice lines (which is an Array in the Peppol_Invoice object), you must use a Loop element.

- Loop through your related Invoice Lines. In this example we loop Opportunity Products.
- Assignment (in Loop): Create a new Apex-defined variable for a single line item (e.g., Peppol_Invoice_Line, using cadmus_peppol.Peppol_InvoiceLine class). Map the product fields to this single line variable.
- Assignment (in Loop): Create a collection variable for the lines (e.g., Peppol_Invoice_Line_Collection, as a collection of cadmus_peppol.Peppol_InvoiceLine). Use the Add operator to add your single line variable to this collection.
- Assignment (after Loop): Assign your Peppol_Invoice_Line_Collection to the Peppol_Invoice_Variable.LINES field.
7.5. Call the Peppol Apex Action #
- Add an Apex Action element to the end of your Flow.

- Search for and select the action apex class: cadmus_peppol__Peppol_ServiceFlow.
- Set the two required properties for this action:
- recordId: Pass in your recordId variable (from step 7.2).
- cadmus_peppol__Peppol_Invoice: Pass in your fully mapped Peppol_Invoice_Variable (from step 7.4).
- Save and Activate your Flow. Ensure the API name matches what you entered in the Actionable record (step 5.2).
8. Post-Processing & Troubleshooting #
8.1. The Peppol Sales Invoice Object #
API Name: cadmus_peppol__PeppolSalesInvoice__c
When you successfully send an invoice, a Peppol Sales Invoice record is automatically created. This object tracks the status of the submission.
- Invoice Status: This field tracks the two-step callback process:
- Created: This is the first callback, indicating the invoice was successfully pushed to the Peppol network.
- Processed: This is the second callback, indicating the invoice was fully processed by Peppol and a UBL document has been generated. At this stage, the UBL document will be attached to the Files related list of this PeppolSalesInvoice__c
- SF_RecordId__c (cadmus_peppol__SF_RecordId__c): This field stores the Salesforce Record ID of the object you sent (e.g., your custom Invoice record). You can use this field in a Flow or Trigger to relate the PeppolSalesInvoice__c record back to your original Salesforce record.
- Sample Query:

SELECT Id, Name, cadmus_peppol__Status__c, cadmus_peppol__Invoice_Number__c
FROM cadmus_peppol__PeppolSalesInvoice__c
WHERE CreatedDate = TODAY
ORDER BY CreatedDate DESC

8.2. Logs & Troubleshooting #

During registration (or updating credentieals) from the Peppol Admin tab (step 2.2) above customers can enable / dissable Peppol Logs with the Enable Peppol Logs flag (enabled by default).
If you enable the logging, Peppol Log records will be created for the both successful and failed transactions. This is the first place to check if you encounter any callout or system errors when sending Peppol Invoices.
- API Name: cadmus_peppol__PeppolLog__c
- Sample Query:

SELECT Id, cadmus_peppol__Endpoint__c, cadmus_peppol__ErrorMessage__c,
cadmus_peppol__ResponseBody__c, CreatedDate
FROM cadmus_peppol__PeppolLog__c
WHERE CreatedDate = TODAY
ORDER BY CreatedDate DESC

Appendix 1. Peppol Invoice Object mapping to payload JSON properties: #
Top-Level Invoice Fields #
| Apex-Defined Variable (FLOW) | Peppol JSON Property | Required | Description |
| Peppol_Invoice.
INVOICE_NUMBER |
number | Yes | The invoice number. |
| Peppol_Invoice.
CREDIT_INVOICE |
creditInvoice | Yes | Boolean. true if this is a credit invoice. |
| Peppol_Invoice.
INVOICE_ISSUE_DATE |
invoiceDate | Yes | The invoice issue date (format: YYYY-MM-DD). |
| Peppol_Invoice.
INVOICE_REFERENCE |
buyerReference | No | A reference from the buyer (e.g., PO number). |
| Peppol_Invoice.
INVOICE_TOTAL_INCL_VAT |
totalInclVat | Yes | The total amount including VAT. |
| Peppol_Invoice.
INVOICE_TOTAL_EXCL_VAT |
totalExclVat | Yes | The total amount excluding VAT. |
| Peppol_Invoice.
INVOICE_TOTAL_VAT |
totalVat | Yes | The total VAT amount. |
| Peppol_Invoice.
PAYABLE_ROUNDING_AMOUNT |
payableRoundingAmount | No | The rounding amount. |
| Peppol_Invoice.
DEFAULT_CURRENCY |
currency | Yes | The currency code (e.g., ‘EUR’). |
| Peppol_Invoice.
INVOICE_PAYMENT_TERM_DESCRIPTION |
paymentTerms | No | A textual description of the payment terms. |
Supplier Fields #
| Apex-Defined Variable (FLOW) | Peppol JSON Property | Required | Description |
| Peppol_Invoice.supplier.
SENDER_NAME |
supplier.name | Yes | The supplier’s company name. |
| Peppol_Invoice.supplier.
SENDER_PEPPOL_ID |
supplier.peppolID | Yes | The supplier’s Peppol ID. |
| Peppol_Invoice.supplier.
SENDER_CONTACT_EMAIL |
supplier.email | No | The supplier’s contact email. |
| Peppol_Invoice.supplier.
SENDER_CONTACT_TEL |
supplier.phone | No | The supplier’s contact phone. |
| Peppol_Invoice.supplier.
SENDER_CONTACT_NAME |
supplier.contact | No | The supplier’s contact person. |
| Peppol_Invoice.supplier.
SENDER_STREET |
supplier.address.street | Yes | Supplier’s street name. |
| Peppol_Invoice.supplier.
SENDER_STREET_NR |
supplier.address.streetNumber | No | Supplier’s street number. |
| Peppol_Invoice.supplier.
SENDER_CITY |
supplier.address.city | Yes | Supplier’s city. |
| Peppol_Invoice.supplier.
SENDER_POSTALCODE |
supplier.address.zipCode | Yes | Supplier’s zip code. |
| Peppol_Invoice.supplier.SENDER_COUNTRY | supplier.address.countryCode | Yes | Supplier’s country code (2-letter ISO). |
| Peppol_Invoice.supplier.SENDER_VAT | supplier.vatNumber | No | The supplier’s VAT number. |
| Peppol_Invoice.supplier.SENDER_EXTRA_IDENTIFIERS | supplier.extraIdentifiers | No | Additional identifiers for the supplier. |
Customer Fields #
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_Invoice.customer.
RECIPIENT_NAME |
customer.name | Yes | The customer’s company name. |
| Peppol_Invoice.customer.
RECIPIENT_VAT |
customer.vatNumber | No | The customer’s VAT number. |
| Peppol_Invoice.customer.
RECIPIENT_STREET |
customer.address.street | Yes | Customer’s street name. |
| Peppol_Invoice.customer.
RECIPIENT_STREET_NR |
customer.address.
streetNumber |
No | Customer’s street number. |
| Peppol_Invoice.customer.
RECIPIENT_CITY |
customer.address.city | Yes | Customer’s city. |
| Peppol_Invoice.customer.
RECIPIENT_POSTALCODE |
customer.address.
zipCode |
Yes | Customer’s zip code. |
| Peppol_Invoice.customer.
RECIPIENT_COUNTRY |
customer.address.
countryCode |
Yes | Customer’s country code (2-letter ISO). |
Delivery Fields #
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_Invoice.delivery.
INVOICE_DELIVERY_DATE |
delivery.
deliveryDate |
No | The delivery date (YYYY-MM-DD). |
| Peppol_Invoice.delivery.
DELIVERY_ADDRESS_STREET |
delivery.
address.street |
No | Delivery street. |
| Peppol_Invoice.delivery.
DELIVERY_ADDRESS_STREET_NR |
delivery.
address.streetNumber |
No | Delivery street number. |
| Peppol_Invoice.delivery.
DELIVERY_ADDRESS_CITY |
delivery.
address.city |
No | Delivery city. |
| Peppol_Invoice.delivery.
DELIVERY_ADDRESS_POSTALCODE |
delivery.
address.zipCode |
No | Delivery zip code. |
| Peppol_Invoice.delivery.DELIVERY_ADDRESS_COUNTRY | delivery.
address.countryCode |
No | Delivery country code. |
VAT Totals (vatTotals collection) #
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_InvoiceVatTotals.
VATTOTALS_VAT_TYPE |
vatTotals[].vatType | Yes | VAT type (e.g., ‘S’ for Standard). |
| Peppol_InvoiceVatTotals.
VATTOTALS_VAT_PERCENTAGE |
vatTotals[].vatPercentage | Yes | The VAT percentage for this category. |
| Peppol_InvoiceVatTotals.
VATTOTALS_VAT_TOTAL_EXCL |
vatTotals[].totalExclVat | Yes | The total base amount for this VAT category. |
| Peppol_InvoiceVatTotals.
VATTOTALS_VAT_TOTAL |
vatTotals[].totalVat | Yes | The total VAT amount for this category. |
| Peppol_InvoiceVatTotals.
VATTOTALS_VAT_TOTAL_INCL |
vatTotals[].totalInclVat | Yes | The total amount incl. VAT for this category. |
Invoice Lines (lines collection) #
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_InvoiceLine.
LI_LINE_NUMBER |
lines[].lineNumber | Yes | Unique line number for the item. |
| Peppol_InvoiceLine.
LI_PROD_NAME |
lines[].itemName | Yes | Description or name of the item. |
| Peppol_InvoiceLine.
LI_QUANTITY |
lines[].quantity | Yes | Quantity of the item. |
| Peppol_InvoiceLine.LI_UNIT | lines[].unitType | Yes | Unit code (e.g., ‘PCE’ for piece). |
| Peppol_InvoiceLine.
LI_PRICE_EXCL_VAT |
lines[].itemExclVat | Yes | Unit price excluding VAT. |
| Peppol_InvoiceLine.LI_VAT_TYPE | lines[].vatType | Yes | VAT type for the line (e.g., ‘S’). |
| Peppol_InvoiceLine.
LI_VAT_PERCENTAGE |
lines[].vatPercentage | Yes | VAT percentage for the line. |
| Peppol_InvoiceLine.
LI_TOTAL_DISCOUND_EXCL_VAT |
lines[].totalDiscountExclVat | No | Total discount for the line (excl. VAT). |
| Peppol_InvoiceLine.
LI_TOTAL_EXCL_VAT |
lines[].totalExclVat | Yes | Total amount for the line (excl. VAT). |
Payment Methods (collection) #
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_InvoicePaymentMethod.
PAYMENT_REFERENCE |
paymentMethods[].
paymentReference |
No | Structured payment reference (e.g., OGM). |
| Peppol_InvoicePaymentMethod.
PAYMENT_TYPE |
paymentMethods[].
paymentType |
Yes | Payment type (e.g., ‘SEPA_CREDIT_TRANSFER’). |
| Peppol_InvoicePaymentMethod.
PAYMENT_NAME |
paymentMethods[].name | No | Name of the account holder. |
| Peppol_InvoicePaymentMethod.
PAYMENT_IBAN |
paymentMethods[].iban | No | IBAN for the payment. |
| Peppol_InvoicePaymentMethod.
PAYMENT_BIC |
paymentMethods[].bic | No | BIC (Swift) for the payment. |
| Peppol_InvoicePaymentMethod.
PAYMENT_TOTAL_PAID |
paymentMethods[].
totalPaid |
No | The total amount already paid. |
| Peppol_Invoice.
TOTAL_AMOUNT_TO_PAY |
paymentMethods[].
totalToPay |
Yes | The total amount to be paid. |
Payment Methods (collection) #
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_InvoicePaymentMethod.
PAYMENT_REFERENCE |
paymentMethods[].
paymentReference |
No | Structured payment reference (e.g., OGM). |
| Peppol_InvoicePaymentMethod.
PAYMENT_TYPE |
paymentMethods[].
paymentType |
Yes | Payment type (e.g., ‘SEPA_CREDIT_TRANSFER’). |
| Peppol_InvoicePaymentMethod.
PAYMENT_NAME |
paymentMethods[].name | No | Name of the account holder. |
| Peppol_InvoicePaymentMethod.
PAYMENT_IBAN |
paymentMethods[].iban | No | IBAN for the payment. |
| Peppol_InvoicePaymentMethod.
PAYMENT_BIC |
paymentMethods[].bic | No | BIC (Swift) for the payment. |
| Peppol_InvoicePaymentMethod.
PAYMENT_TOTAL_PAID |
paymentMethods[].
totalPaid |
No | The total amount already paid. |
| Peppol_Invoice.
TOTAL_AMOUNT_TO_PAY |
paymentMethods[].
totalToPay |
Yes | The total amount to be paid. |
Payment Methods (collection) #
** Attachments mapped by PDF Butler (generated document). No need to map attachments in the FLOW.
| Apex-Defined Variable | Peppol JSON Property | Required | Description |
| Peppol_InvoiceAttachment.
FILE_NAME |
attachments[].filename | Yes | The name of the attachment. |
| Peppol_InvoiceAttachment.
FILE_CONTENT |
attachments[].base64Data | Yes | The file content, Base64 encoded. |
| Peppol_InvoiceAttachment.
FILE_TYPE |
attachments[].fileType | No | The type of file (e.g., ‘INVOICE’). |
| Peppol_InvoiceAttachment.
MIME_TYPE |
attachments[].mimeType | No | The MIME type of the file (e.g., ‘application/pdf’). |
| Peppol_InvoiceAttachment.NOTE | attachments[].note | No | A short note about the attachment. |
Appendix 2. Mapped JSON Payload Sample. #
{
“number”: “string”,
“externalReference”: “string”,
“creditInvoice”: true,
“isInclVat”: true,
“invoiceReference”: “string”,
“invoiceDate”: “2019-08-24”,
“invoiceExpiryDate”: “2019-08-24”,
“buyerReference”: “string”,
“purchaseOrderReference”: “string”,
“salesOrderReference”: “string”,
“despatchDocumentReference”: “string”,
“supplier”: {
“peppolID”: “string”,
“code”: “string”,
“languageCode”: “st”,
“name”: “string”,
“address”: {
“street”: “string”,
“streetNumber”: “string”,
“streetBox”: “string”,
“city”: “string”,
“zipCode”: “string”,
“countrySubentity”: “string”,
“countryCode”: “st”
},
“phone”: “string”,
“email”: “string”,
“invoiceEmail”: “string”,
“contact”: “string”,
“vatStatus”: 1,
“taxNumberType”: 1,
“taxNumber”: “string”,
“legalPersonRegister”: “string”,
“vatNumber”: “string”,
“glnNumber”: “string”,
“extraIdentifiers”: [
{
“identifier”: “string”
}
]
},
“customer”: {
“peppolID”: “string”,
“code”: “string”,
“languageCode”: “st”,
“name”: “string”,
“address”: {
“street”: “string”,
“streetNumber”: “string”,
“streetBox”: “string”,
“city”: “string”,
“zipCode”: “string”,
“countrySubentity”: “string”,
“countryCode”: “st”
},
“phone”: “string”,
“email”: “string”,
“invoiceEmail”: “string”,
“contact”: “string”,
“vatStatus”: 1,
“taxNumberType”: 1,
“taxNumber”: “string”,
“legalPersonRegister”: “string”,
“vatNumber”: “string”,
“glnNumber”: “string”,
“extraIdentifiers”: [
{
“identifier”: “string”
}
]
},
“delivery”: {
“deliveryDate”: “2019-08-24”,
“address”: {
“street”: “string”,
“streetNumber”: “string”,
“streetBox”: “string”,
“city”: “string”,
“zipCode”: “string”,
“countrySubentity”: “string”,
“countryCode”: “st”
},
“identifierType”: 1,
“identifier”: “string”
},
“totalExclVat”: 0,
“totalInclVat”: 0,
“totalVat”: 0,
“currency”: “str”,
“payableRoundingAmount”: 0,
“note”: “string”,
“lines”: [
{
“lineNumber”: “string”,
“itemCodeSeller”: “string”,
“itemCodeBuyer”: “string”,
“itemName”: “string”,
“itemOriginCountryCode”: “st”,
“quantity”: 0,
“unitType”: 1,
“itemExclVat”: 0,
“itemInclVat”: 0,
“vatType”: 1,
“vatPercentage”: 0,
“totalDiscountExclVat”: 0,
“totalDiscountInclVat”: 0,
“totalExclVat”: 0,
“totalInclVat”: 0,
“invoicePeriodStartDate”: “2019-08-24”,
“invoicePeriodEndDate”: “2019-08-24”,
“additionalProperties”: [
{
“name”: “string”,
“value”: “string”
}
],
“standardItemIdentifierType”: 1,
“standardItemIdentifier”: “string”,
“purchaseOrderLineReference”: “string”
}
],
“vatTotals”: [
{
“vatType”: 1,
“vatPercentage”: 0,
“totalExclVat”: 0,
“totalVat”: 0,
“totalInclVat”: 0,
“note”: “string”
}
],
“paymentTerms”: “string”,
“paymentMethods”: [
{
“paymentType”: 1,
“paymentReference”: “string”,
“name”: “string”,
“iban”: “string”,
“bic”: “string”,
“sepaMandateID”: “string”,
“sepaIban”: “string”,
“totalPaid”: 0,
“totalToPay”: 0
}
],
“attachments”: [
{
“filename”: “string”,
“fileType”: 1,
“mimeType”: “string”,
“base64Data”: “string”,
“note”: “string”,
“externalReference”: “string”
}
]
}

