1. Introducing Storecove

Storecove is the only international operating Peppol accesspoint that offers a one-stop e-invoicing solution. Large companies and ERP systems can connect with all worldwide available e-invoicing networks. By supporting every global invoice format we ensure that you only need to connect through a single connection with a single data format. Development departments worldwide love our solution. Try us today and test for free!

1.1. Getting Started

This guide will help you get started with the Storecove API in under 5 minutes.

Register for API access

  1. As an individual company:

    • Register here as a company. You can use this account to send and receive on behalf of multipe organizations in your company group. To use this account for development and test, go to the section "Developers" in the "Billing Details" menu item and activate sandbox mode.

  2. As a reseller or system integrator for multiple senders and receivers:

    • Please contact us on dkars[at]storecove.com to become a Storecove Partner!

  3. As a service provider, ERP or accounting system, supporting multiple senders and receivers:

Create your API key

Create a new API key by clicking the "Create New API Key" button. For the Integrator package, create a "Master" key.

Make your first API call

Create a file "discovery.json" with the following contents:

{
  "network": "peppol",
  "documentTypes": ["invoice"],
  "scheme": "0106",
  "identifier":"60881119"
}

Call the API with your API key to check whether this participant identifier can receive invoices on the Peppol network. This example below checks whether the Dutch Chambre of Commerce ("0106") number "60881119" (which is Storecove!) can receive invoices via the Peppol network:

curl \
-X POST "https://api.storecove.com/api/v2/discovery/receives" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @discovery.json
Important
Swap the "API_KEY_HERE" for the API key you created. Don’t remove the "Bearer" prefix!

Since Storecove can receive invoices on the (TEST) Pepol network, the response is

{
  "code":  "ok",
  "email": false
}
Note about the "email" property

The "email" property indicates whether the electronic invoice can be sent via Peppol, but would ultimately received as PDF via email. This could currently only be the case for Belgian receivers. In Belgium, all companies have been registered on the Peppol network by the Belgian government, but if they have not chosen a commercial Peppol service provider, they will only receive a PDF version of the invoice and not your/our electronic invoice. It is up to the receiver to resolve this if they want electronic invoices, and therefore it is recommended to send via Peppol even if the "email" property is true. Nevertheless, this property does give you the opportunity to send your own email if you prefer that.

Send your first invoice

The first step in sending an invoice is to create a sender. This sender is called a "LegalEntity". LegalEntities can both send as well as receive, but for this test we will focus on their sending role. Although the LegalEntity we are creating now can contain dummy data, you should carefully choose the LeganEntity’s country, because this will be important for the contents of the invoice. Therefore, choose a senario from the matrix below:

Receiver

Sender

EU/EEA

SG

AU/NZ

IN

SA

World

EU/EEA

VAT Native

GST 0% outside scope

GST 0% outside scope

Contact Us

Contact Us

Contact Us

SG

VAT 0% outside scope

GST Native

GST 0% outside scope

Contact Us

Contact Us

Contact Us

AU/NZ

VAT 0% outside scope

VAT 0% outside scope

GST Native

Contact Us

Contact Us

Contact Us

IN

VAT 0% outside scope

GST 0% outside scope

GST 0% outside scope

GST Native

Contact Us

Contact Us

SA

VAT 0% outside scope

GST 0% outside scope

GST 0% outside scope

Contact Us

VAT Native

Contact Us

World (US/CA etc)

VAT 0% outside scope

GST 0% outside scope

GST 0% outside scope

Contact Us

Contact Us

Contact Us

The dark green boxes in the diagonal are documents exchanged inside a Peppol territory. Peppol documents, in particular the invoice document, have been tailored towards supporting features that are relevant inside a Peppol territory. And so these scenario’s are the simplest to use. However, Any of the lighter green scenario’s will also work out of the box.

1.1.1. Create the sender

Now that you have chosen the sender/receiver scenario, let’s create the sending LegalEntity. How the LegalEntity is created, depends on the type of account you have. Click the correct tab below to see how to create a LegalEntity:

For a company account, creating a LegalEntity is done in the UI, on

In the UI you will be guided as to which participant identifiers to add to the LegalEntity.

Once created you will see the legalEntityId in the UI. You will need this id in the next step. Note that it can take up to a day for Storecove to approve the LegalEntity for this type of account.

In the integrator account you have two choices:

  1. create the LegalEntity in the UI. To create the LegalEntity in the UI, go to

    • https://app.storecove.com/senders Once created you will see the legalEntityId in the UI. You will need this id in the next step. Note that it can take up to a day for Storecove to approve the LegalEntity.

  2. create the LegalEntity through the API

Creating the LegalEntity through the API involves two steps:

  1. Creation of the actual LegalEntity

  2. Creation of the participant identifiers that identify the LegalEntity for legal and tax purposes.

For the first step, create a file called "legal_entity.json" with the following contents:

{
	"party_name": "Test Party",
	"line1": "Test Street 1",
	"city": "Test City",
	"zip": "Zippy",
	"country": "DE"
}

Next, call the API:

curl \
-X POST "https://api.storecove.com/api/v2/legal_entities" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @legal_entity.json

The response will ook like this:

{
    "id":  123456789,
    "party_name": "Test Party",
    "line1": "Test Street 1",
    "city": "Test City",
    "zip": "Zippy",
    "country": "SE",
    "public": true,
    "advertisements": ["invoice"],
    "api_keys": [ "LEGAL_ENTITY_API_KEY" ]
}

Note down the "id" and "api_keys" properties: we will need these!

Now, lets add a legal identifier and/or a tax identifier. This list has an overview per country of which identifiers a sender needs:

Region Country B2X Legal Tax Routing

AUNZ

AU

B+G

AU:ABN

AU:ABN

AUNZ

NZ

B+G

GLN

NZ:GST

GLN

EEA

CH

B+G

CH:UIDB

CH:VAT

CH:UIDB

EEA

IS

B+G

IS:KTNR

IS:KTNR

EEA

LI

B+G

LI:VAT

LI:VAT

EEA

NO

B+G

NO:ORG

NO:VAT

NO:ORG

EU

AD

B+G

AD:VAT

AD:VAT

EU

AL

B+G

AL:VAT

AL:VAT

EU

AT

G

AT:GOV

Centralized id: 9915:b

EU

AT

B

AT:KUR

AT:VAT

AT:KUR

EU

BA

B+G

BA:VAT

BA:VAT

EU

BE

B+G

BE:EN

BE:VAT

BE:EN

EU

BG

B+G

BG:VAT

BG:VAT

EU

CY

B+G

CY:VAT

CY:VAT

EU

CZ

B+G

CZ:VAT

CZ:VAT

EU

DE

G

DE:LWID

DE:LWID

EU

DE

B

DE:VAT

DE:VAT

EU

DK

B+G

DK:DIGST

DK:ERST (0198)

DK:DIGST, DK:ERST

EU

EE

B+G

EE:CC

EE:VAT

EE:CC

EU

ES

B

ES:VAT

ES:VAT

EU

FI

B+G

FI:OVT, FI:ORG

FI:VAT (0213)

FI:OVT, FI:ORG

EU

FR

G

FR:SIRENE, FR:SIRET

Centralized id: 0009:11000201100044

EU

FR

B

FR:SIRENE, FR:SIRET

FR:VAT

FR:SIRENE, FR:SIRET

EU

GR

B+G

GR:VAT

GR:VAT

EU

HR

B+G

HR:VAT

HR:VAT

EU

HU

B+G

HU:VAT

HU:VAT

EU

IE

B+G

IE:VAT

IE:VAT

EU

IT

G (Peppol)

IT:CUUO

IT:CUUO

EU

IT

B+G (SDI)

IT:CUUO

IT:CF, IT:IVA

IT:CUUO

EU

LT

B+G

LT:LEC

LT:VAT

LT:LEC

EU

LU

B+G

LU:VAT

LU:VAT

EU

LV

B+G

LV:VAT

LV:VAT

EU

MC

B+G

MC:VAT

MC:VAT

EU

ME

B+G

ME:VAT

ME:VAT

EU

MK

B+G

MK:VAT

MK:VAT

EU

MT

B+G

MT:VAT

MT:VAT

EU

NL

G

NL:OINO

NL:OINO

EU

NL

B

NL:KVK

NL:VAT

NL:KVK, NL:VAT

EU

PL

G+B

PL:VAT

PL:VAT

EU

PT

G+B

PT:VAT

PT:VAT

EU

RO

G+B

RO:VAT

RO:VAT

EU

RS

G+B

RS:VAT

RS:VAT

EU

SE

G+B

SE:ORGNR

SE:VAT

SE:ORGNR

EU

SI

G+B

SI:VAT

SI:VAT

EU

SK

G+B

SK:VAT

SK:VAT

EU

SM

G+B

SM:VAT

SM:VAT

EU

TR

G+B

TR:VAT

TR:VAT

EU

VA

G+B

VA:VAT

VA:VAT

SG

SG

G

SG:UEN

Centralized id: 0195:SGUENT08GA0028A

SG

SG

B

SG:UEN

SG:UEN

World

GB

B

DUNS, GLN

GB:VAT

DUNS, GLN

World

IN

B

IN:GSTIN

World

US

B

DUNS, GLN

DUNS, GLN

World

CA

B

DUNS, GLN

DUNS, GLN

To create the identifier, first create a file "identifier.json" like this:

{
	"superscheme": "iso6523-actorid-upis",
	"scheme": "DE:VAT",
	"identifier": "DE123456789SC"
}

And create it with

curl \
-X POST "https://api.storecove.com/api/v2/legal_entities/LEGAL_ENTITY_ID_HERE/peppol_identifiers" \
-H "Accept: application/json" \
-H "Authorization: Bearer LEGAL_ENTITY_API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @identifier.json
Important
Swap the "LEGAL_ENTITY_ID_HERE" and the "LEGAL_ENTITY_API_KEY_HERE" for the id and API key you received when creating it.

Creating the LegalEntity through the API involves two steps:

  1. Creation of the actual LegalEntity

  2. Creation of the participant identifiers that identify the LegalEntity for legal and tax purposes.

For the first step, create a file called "legal_entity.json" with the following contents:

{
	"party_name": "Test Party",
	"line1": "Test Street 1",
	"city": "Test City",
	"zip": "Zippy",
	"country": "DE"
}

Next, call the API:

curl \
-X POST "https://api.storecove.com/api/v2/legal_entities" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @legal_entity.json

The response will ook like this:

{
    "id":  123456789,
    "party_name": "Test Party",
    "line1": "Test Street 1",
    "city": "Test City",
    "zip": "Zippy",
    "country": "DE",
    "public": true,
    "advertisements": ["invoice"]
}

Note down the "id" property: we will need this!

Now, lets add a legal identifier and/or a tax identifier. This list has an overview per country of which identifiers a sender needs:

Region Country B2X Legal Tax Routing

AUNZ

AU

B+G

AU:ABN

AU:ABN

AUNZ

NZ

B+G

GLN

NZ:GST

GLN

EEA

CH

B+G

CH:UIDB

CH:VAT

CH:UIDB

EEA

IS

B+G

IS:KTNR

IS:KTNR

EEA

LI

B+G

LI:VAT

LI:VAT

EEA

NO

B+G

NO:ORG

NO:VAT

NO:ORG

EU

AD

B+G

AD:VAT

AD:VAT

EU

AL

B+G

AL:VAT

AL:VAT

EU

AT

G

AT:GOV

Centralized id: 9915:b

EU

AT

B

AT:KUR

AT:VAT

AT:KUR

EU

BA

B+G

BA:VAT

BA:VAT

EU

BE

B+G

BE:EN

BE:VAT

BE:EN

EU

BG

B+G

BG:VAT

BG:VAT

EU

CY

B+G

CY:VAT

CY:VAT

EU

CZ

B+G

CZ:VAT

CZ:VAT

EU

DE

G

DE:LWID

DE:LWID

EU

DE

B

DE:VAT

DE:VAT

EU

DK

B+G

DK:DIGST

DK:ERST (0198)

DK:DIGST, DK:ERST

EU

EE

B+G

EE:CC

EE:VAT

EE:CC

EU

ES

B

ES:VAT

ES:VAT

EU

FI

B+G

FI:OVT, FI:ORG

FI:VAT (0213)

FI:OVT, FI:ORG

EU

FR

G

FR:SIRENE, FR:SIRET

Centralized id: 0009:11000201100044

EU

FR

B

FR:SIRENE, FR:SIRET

FR:VAT

FR:SIRENE, FR:SIRET

EU

GR

B+G

GR:VAT

GR:VAT

EU

HR

B+G

HR:VAT

HR:VAT

EU

HU

B+G

HU:VAT

HU:VAT

EU

IE

B+G

IE:VAT

IE:VAT

EU

IT

G (Peppol)

IT:CUUO

IT:CUUO

EU

IT

B+G (SDI)

IT:CUUO

IT:CF, IT:IVA

IT:CUUO

EU

LT

B+G

LT:LEC

LT:VAT

LT:LEC

EU

LU

B+G

LU:VAT

LU:VAT

EU

LV

B+G

LV:VAT

LV:VAT

EU

MC

B+G

MC:VAT

MC:VAT

EU

ME

B+G

ME:VAT

ME:VAT

EU

MK

B+G

MK:VAT

MK:VAT

EU

MT

B+G

MT:VAT

MT:VAT

EU

NL

G

NL:OINO

NL:OINO

EU

NL

B

NL:KVK

NL:VAT

NL:KVK, NL:VAT

EU

PL

G+B

PL:VAT

PL:VAT

EU

PT

G+B

PT:VAT

PT:VAT

EU

RO

G+B

RO:VAT

RO:VAT

EU

RS

G+B

RS:VAT

RS:VAT

EU

SE

G+B

SE:ORGNR

SE:VAT

SE:ORGNR

EU

SI

G+B

SI:VAT

SI:VAT

EU

SK

G+B

SK:VAT

SK:VAT

EU

SM

G+B

SM:VAT

SM:VAT

EU

TR

G+B

TR:VAT

TR:VAT

EU

VA

G+B

VA:VAT

VA:VAT

SG

SG

G

SG:UEN

Centralized id: 0195:SGUENT08GA0028A

SG

SG

B

SG:UEN

SG:UEN

World

GB

B

DUNS, GLN

GB:VAT

DUNS, GLN

World

IN

B

IN:GSTIN

World

US

B

DUNS, GLN

DUNS, GLN

World

CA

B

DUNS, GLN

DUNS, GLN

To create the identifier, first create a file "identifier.json" like this:

{
	"superscheme": "iso6523-actorid-upis",
	"scheme": "DE:VAT",
	"identifier": "DE123456789SC"
}

And create it with

curl \
-X POST "https://api.storecove.com/api/v2/legal_entities/LEGAL_ENTITY_ID_HERE/peppol_identifiers" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @identifier.json
Important
Swap the "LEGAL_ENTITY_ID_HERE" for the id you received when creating the LegalEntity.

1.1.2. Choosing the sender/receiver combination

Having created our sender, we now return to the sender/receiver combination and create a file "invoice.json" with the appropriate contents. Click on the scenario you are using and copy/paste!

Receiver

Sender

EU/EEA

SG

AU/NZ

IN

SA

World

EU/EEA

GST 0% outside scope

Contact Us

Contact Us

Contact Us

SG

VAT 0% outside scope

GST 0% outside scope

Contact Us

Contact Us

Contact Us

AU/NZ

VAT 0% outside scope

VAT 0% outside scope

Contact Us

Contact Us

Contact Us

IN

VAT 0% outside scope

GST 0% outside scope

GST 0% outside scope

GST Native

Contact Us

Contact Us

SA

VAT 0% outside scope

GST 0% outside scope

GST 0% outside scope

GST 0% outside scope

Contact Us

World (US/CA etc)

GST 0% outside scope

GST 0% outside scope

Contact Us

Contact Us

Contact Us

Next use this API call to send the invoice:

curl \
-X POST "https://api.storecove.com/api/v2/document_submissions" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @invoice.json

The result will be similar to:

{
  "guid":  "c65d43d1-4b44-40a9-8926-6743f9fc90b2"
}

Sent!

Congratulations! You’ve successfully sent an invoice via the (TEST) Peppol network. It was received and if you like you can now retrieve the evidence for that by calling

curl \
-X GET "https://api.storecove.com/api/v2/invoice_submissions/c65d43d1-4b44-40a9-8926-6743f9fc90b2/evidence" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
--data @invoice.json

(Change the GUID to the one you received when sending the invoice.) This will give you the exact invoice sent, as well as the digital signature from the receiving accesspoint.

What if my Customer is not on the Peppol network?

Then we can send an email with an electronic invoice attachment that is appropriate for the country your Customer is in. For instance, in de Germany we would send a ZUFGFeRD attachment, in France Facture-X and in Italy a FatturaPA. For India, the GSTN-signed JSON with a PDF that includes the QR code will be attached. Your receiver will know how to process these!

To test the email scenario, simply prefix the email address in the examples above with "sandbox_do_send_" and change the "id" property of the "eIdentifiers" array to something not on the Peppol network, by prefixing it with "notexist_" like this:

{
  "routing":  {
    "emails": [
      "sandbox_do_send_myemail@example.com"
    ],
    "eIdentifiers": [
      {
        "scheme": "0106",
        "identifier": "notexist_60881119"
      }
    ]
  }
}

Alternatively, you can also just leave the "eIdentifiers" array empty.

We recommend using the account you’ve just created for all your development purposes. When you’re ready to launch your integration, create a new account and reach out to our support to convert to 'production' API keys!

2. Using the API (Version 2)

The Storecove V2 API provides all your e-invoicing and Peppol integration needs. The V2 API works alongside the SFTP and email integration options for companies.

This section outlines everything you need to us the V2 API, which is available at https://api.storecove.com/api/v2/.

2.1. API Keys

To call the Storecove V2 API, you will first need an API key from the developer portal. An API key represents your application, so if you’re building multiple solutions you’ll need multiple keys.

API keys should be considered secrets, so do not publish them in public config such as to frontend JavaScript applications.

To do this, navigate to API Keys in your Storecove admin panel. You will typically need only one, however you can create multiple for use with different environments, migrations or when rotating secrets.

The API Key must be provided in the Authorization header using the Bearer scheme for all API requests.

...
Authorization: Bearer API_KEY_HERE
...

For instance, a curl request could look like

curl \
-X POST "https://api.storecove.com/api/v2/legal_entities" \
-H "Accept: application/json" \
-H "Authorization: Bearer API_KEY_HERE" \
-H "Content-Type: application/json" \
-d "{ \"party_name\": \"Test Party\", \"line1\": \"Test Street\", \"city\": \"Test City\", \"zip\": \"Zippy\", \"country\": \"NL\", \"tenant_id\": \"my_id\"}"

These headers are safe inside the TLS tunnel that protects the Storecove API.

2.2. Webhooks

Webhooks allow you to be notified of certain events taking place on the Storeove platform, without the need for polling. They consist of a URL that is called with a POST, optionally protected with HTTP Basic Authentication.

You should reply with a HTTP OK (200) to the POST. If another status code is presented or we fail to reach the specified URL, we will retry again at a later time for a total of 5 days.

You can create and manage your webhooks on the Storecove’s Website, under the "Settings" / "Webhooks" menu item. On that page you will see a list of you existing webhooks and a button that, once clicked, opens a modal where you can put the following data to create a new webhook:

  • the URL of the webhook: we will make a POST request to this address;

  • the event to notify;

  • optional HTTP Basic Authentication username and password: we will use these credentials when making a request to the endpoint.

We will keep calling the webhook until we receive an HTTP 200 from you, but only for 5 days.

During development, the following site may prove useful for viewing the webhooks we call:

https://webhook.site

2.2.1. For Sending Invoices

There are two webhooks related to an invoice that has been sent:

  • invoice_submission

  • document_submission

The invoice_submission is an event specific to the invoice document type, whereas the document_submission is more generic. Support for invoice_submission will be removed in a future release.

Invoice Submission

When an invoice submission is complete (more specifically all its actions have executed) we make a request to your webhooks in the following format:

{
    "event_type": "invoice_submission",
    "guid": "f4624435-7fc4-4fc2-9379-dcb641d593dc",
    "result": "failed",
    "actions": [{
        "type": "peppol",
        "destination": "NL:VAT.NL012345678B01",
        "result": "error"
    }],
    "tenant_id": "YourTenantId"
}

Possible results are:

  • succeeded

  • failed

  • no_action_taken

The result 'no action taken' is sent when none of the Peppol identifiers were available on the Peppol network and no fallback email address was provided.

There are three types of actions:

  • peppol

  • edi

  • email

Each has the following possible results:

  • received

  • error

  • unknown

The status 'unknown' indicates that the result of the action is not yet known. This status is not actively notified, but if you request the invoice_submission status through our API, you may get this status.

We will normally take only one action, but if the action has failed we may retry and create a second, third etc. action until one succeeds.

An invoice submission is considered "succeeded" if one of its actions has status "received".

The tenant_id property is related to the LegalEntity. If you specify it when creating or updating a LegalEntity, this field will be included in the webhook and can be used to determine which of your tenants the webhook is for. If you do not have a multi-tenant platform, this field can be ignored.

Document Submission

A document submission webhook looks as follows:

{
    "event_type": "document_submission",
    "event_group": "invoice",
    "event": "succeeded",
    "details": "A textual representation of the event details, e.g. clarifications for Under Query",
    "guid": "f4624435-7fc4-4fc2-9379-dcb641d593dc",
    "idempotencyGuid": "7305ebe5-9a39-4981-9f98-c64e340f2886",
    "tenant_id": "YourTenantId"
}

The following can be in the webhook:

Event Type Event Group Event Meaning Triggered By

document_submission

invoice

no_action_taken

No recipients found to send the document to.

Routing problem. Provide a valid destination.

failed

Could not send the document. This is a final state.

Unrecoverable technical delivery problem.

succeeded

Received by corner 3

Receipt acknowledged by corner 3.

acknowledged

Received by corner 4

Receipt acknowledged by corner 4.

in_process

Processing by corner 4 started

under_query

Under query by corner 4

conditionally_accepted

Conditionally accepted by corner 4

rejected

Rejected by corner 4

accepted

Accepted by corner 4

partially_paid

Partially paid by corner 4

paid

Paid by corner 4

2.2.2. For Receiving Invoices

When a new invoice has been received for you, we will send a webhook with the following contents:

{
    "event_type": "received_invoice",
    "guid": "f4624435-7fc4-4fc2-9379-dcb641d593dc",
    "invoice_number": "20231105/002",
    "tenant_id": "YourTenantId"
}

You can then use the "guid" to retrieve the invoice from the

endpoint, or a similar endpoint for different versions.

The tenant_id property is related to the LegalEntity. If you specify it when creating or updating a LegalEntity, this field will be included in the webhook and can be used to determine which of your tenants the webhook is for. If you do not have a multi-tenant platform, this field can be ignored.

2.3. API tools

There are several types of tools that can speed up your solution development. We publish an Open API v2 (a.k.a. Swagger) specification that allows you to generate client libraries and test API calls using API clients like Postman.

2.3.1. Client Libraries

The API is RESTful and communicates through JSON, so you can easily create your own client if we don’t have one ready to go and you don’t want to leverage the OpenAPI 2.0 API specification (see below).

The easiest way to create a client for your favourite language is by leveraging our OpenAPI 2.0 (previously known as Swagger) specification, which can be found on

There are many generic REST clients for available for different platforms. However, if you wish to roll your own, or would like to quickly generate the model classes, you could use Swagger Codegen.

2.3.2. Postman

Using our OpenAPI 2.0 specification, it is easy to test drive the API, for instance with Postman:

Click "Import," select "Import from From Link," and copy/paste our OpenAPI 2.0 specification URL:

Next, click on the "Headers" tab and copy/paste the API token. You are now ready to test drive the API!

2.3.3. Swagger Codegen

This tool makes it easy to to generate a client library in your favorite language:

First, download the lastest version 2 Java jar:

wget --output-document=swagger-codegen-cli.jar https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.21/swagger-codegen-cli-2.4.21.jar

Next, create the client library (in this example we generate a C# library):

java -jar swagger-codegen-cli.jar generate -i https://www.storecove.com/api/v2/openapi.json -l csharp -o csharp

Language support is extensive, amongst others:

  • C# (csharp, csharp-dotnet2)

  • Java (java-pkmst, java-play-framework, jaxrs-resteasy-eap)

  • Node.js (nodejs-server)

  • Objective-C (objc)

  • Android (android)

  • Perl (perl)

  • PHP (php, php-symfony, php-silex)

  • Python (python)

  • Many others, execute:

java -jar swagger-codegen-cli.jar langs

3. Building Your Solution

Please choose the tab that best fits your type of company:

Sending Sales Invoices

For companies wishing to send sales invoices to their Customers through various channels, including the Peppol network (becoming mandatory in the EU for all public entities), our service sends your invoices as e-invoices that can be automatically processed by your Customer’s accountancy software package / ERP.

There are two ways of presenting your sales invoices into the Storecove platform for e-delivery:

  • By emailing your sales invoices to <your_company_name>@send.storecove.com

  • By uploading your sales invoices via SFTP to <your_company_name>@sftp.storecove.com

  • By pushing your sales invoices into our API

We have a web interface where you can view how we processed your invoice and take action on any errors.

If you use our API, the added benefit is that you can configure Webhooks that we will call, updating you with the delivery status of your sales invoice. In addition, you can integrate the delivery status of sales invoices in your customer service environment by requesting their status.

Please see Individual Companies for details.

Receiving Purchase Invoices

For receiving invoices there are two solutions that we offer:

  • The Peppol European e-invoicing network

  • <your_company_name>@receive.storecove.com (with optional scan&recognize)

Both will give you not only the PDF invoice, but also the e-invoice, ready for automated processing in your ERP without any manual intervention.

These services can be fully managed via the web interface and no API integration is necessary.

We can deliver purchase invoices to most accountancy software packages, either through their API or by sending the purchase invoice to an email address. It is also possible to leverage our Webhooks, which allow you to configure a URL that we will call each time a purchase invoice is received. You can then retrieve it and process it in your ERP.

Receiving invoices

For receiving invoices for your Clients we offer our Peppol Access Point as a Service

This allows you to publish your Client’s Peppol identifiers (i.e. Chambre of Commerce number, VAT number, etc) on the Peppol network.

When an invoice for one of your Clients is received or retrieved, a (configurable) Webhook is called so you can instantly retrieve the invoice from our API.

Sending invoices

If you wish to facilitate your Clients sending sales invoices to their Customers through various channels, including the Peppol network (being mandated in the EU and Asia for public entities), our service will send these sales invoices as e-invoices that can be automatically processed by your Client’s Customer’s accountancy software package / ERP.

We offer a web interface where you can view how we processed your Client’s invoice and correct any errors. We also offer this functionality through the API, available for you to integrate into your software solution. And there are Webhooks available that you can subscribe to, to actively let you know what actions where taken to deliver an invoice. We can also setup periodic reporting.

Please see Software Suppliers for details.

3.1. Individual Companies

3.1.1. API Ingestion

Introduction

API ingestion refers to Storecove receiving and processing you Customer’s invoices by interaction of your code with Storecove’s API, following one of the supported workflows:

  1. Check and submit

  2. Submit and email

Moreover, you can get updates about the status of the invoices that you have submitted by creating one or more webhooks. Operation of workflows and webhooks is explained in the following sections.

Workflows
Check and Submit

First use the Preflight API call. It takes one parameter, an InvoiceRecipientPreflight object. This object contains the ids of the recipient of the invoice. When you call this endpoint, Storecove will query the European Peppol network whether the Customer has registered with this network. If the result code is ‘ok’, submit the invoice via the Invoice Submission API call.

Submit and email

Submit the invoice to the Create Invoice Submission endpoint.

When you call this endpoint, Storecove will:

  1. Query the European Peppol network whether the Customer has registered with this network. If so, the invoice is delivered via Peppol.

  2. If the invoice could not be delivered via Peppol the invoice is delivered to the fallback email address.

There are two main ways to submit an invoice for submission:

  • submit a JSON object that contains the invoice data

  • submit a Base64 encoded string that contains the invoice data in a certain syntax, such as UBL, CII, cXML, SAP IDoc, etc. We are ready to enable other formats on request.

Summary

The following is a list of items that you need to work with the Storecove invoice_submissions API:

Item Description Source

Two Storecove accounts

A development (sandbox) and a production account with API access.

You can self-register, and configure the sandbox account if necessary.

legalEntityId

The id that identifies you as a sender.

Available in the web interface (for individual companies) or to be created via the API (individual companies or Access Point as a Service)

token

The token to use in the Authentication header when doing API calls.

Create your own in the web interface

3.1.2. Email Ingestion

Introduction

Email ingestion refers to Storecove receiving and processing your (or your Client’s) invoice via an email to <company_name>@send.storecove.com. This email should have an attachment that contains the data that makes up the invoice and optionally an attachment that has an image of the invoice, in PDF format.

From: Address

The address you send from determines your identity as sender of the invoice, and so therefore needs to be validated by Storecove. The entire process is described on

To: Address

If you have followed the previous link, you will have setup an email addresss <company_name>@send.storecove.com. You can send emails to this address with your electronic invoices to send.

Attachments
Data

You need to provide an attachment with the data contained in the invoice.

You can attach a UBL 2.0 or UBL 2.1 invoice. Even if these are not 100% compliant, we can probably process them. Contact us on helpdesk@storecove.com for a test if you are not sure.

If you cannot produce a UBL attachment, we also support other formats (like CII, SAP IDoc, cXML, CSV) and we can also support your custom format. Contact us on helpdesk@storecove.com if you need to use a non-UBL format.

PDF

If you have a PDF image of the invoice, you can provide it as an attachment. This attachment’s filename should end in ‘.pdf’. If you do not have a PDF to attach, just leave it out and we will create one for you

3.1.3. SFTP Ingestion

Introduction

SFTP ingestion refers to Storecove receiving and processing your (or your Client’s) invoices via secure file upload to <company_name>@sftp.storecove.com.

Files

The upload may consist of mulitple files, each with its own purpose. We currently support the following purposes:

  • Data

  • Primary image

  • Additional attachments

The data file contains the data of the invoice. It usually is in UBL format, but if you cannot produce a UBL file, we also support other formats (like CII, SAP Ioc, cXML, CSV) and we can also support your custom format. Contact us if you need to use a non-UBL format. The primary image file should be a PDF. The additional attachments are currently also limited to PDF only, but please contact us if you have different requirements.

The filenames, always in lowecase, have the following structure:

  • <file_id>_<purpose>.<extension> or

  • <file_id>_<purpose>_<participant_identifier>.<extension> or

  • <file_id>_additional_<counter>.<extension> or

  • <file_id>_additional_<counter>_<participant_identifier>.<extension>

All files pertaining to the same invoice should have the same file_id. The file_id should never be re-used. The file_id must be a uuid (any version) and therefore may contain only the following characters:

  • a-f, 0-9 and '-'

and have the following structure:

  • cccccccc-cccc-cccc-cccc-cccccccccccc

Note that if you use a hash of the invoice number as file_id, that may work, but you will not be able to resend that invoice. For that reason, it is recommended to include a random string to make the file_id globally unique.

The purpose must be one of:

  • data (this file contains the invoice data and may occur only once)

  • primary (this is the primary image of the invoice, i.e. a PDF of the invoice. It may occur only once.)

  • additional (this indicates an additional attachment, perhaps an invoice specification. It may occur multiple times)

  • structure (see below)

Examples of valid file names are:

  • 82b3785e-0569-482d-a683-ee437eb3df13_data.xml

  • 82b3785e-0569-482d-a683-ee437eb3df13_primary.pdf

  • 82b3785e-0569-482d-a683-ee437eb3df13_additional_1.pdf

  • 82b3785e-0569-482d-a683-ee437eb3df13_primary_nl-oin.00000000000000000000.pdf

  • 82b3785e-0569-482d-a683-ee437eb3df13_additional_hr-vat.hr12345678901_1.pdf

  • 82b3785e-0569-482d-a683-ee437eb3df13_primary_0190.00000000000000000000.pdf

  • 82b3785e-0569-482d-a683-ee437eb3df13_additional_9934.hr12345678901_1.pdf

Tip
It is best to provide your participant identifiers in the data file. That way, you can provide as many as you have. If you are not able to include the participant identifiers in the data file, the filename is the next best option. It can, however, hold only a single participant identifier. The full list of participant identifiers can be found here: Peppol Participant Identifier List
Structure

If you always provide the same set of files (for instance: only a data file or only a data file + a PDF file) then we will configure this statically when we setup your SFTP upload capability. If, however, you wish to have the ability to provide different sets of documents (for instance: sometimes you provide one or more additional attachments, but sometimes you don’t) then it is possible to send us structure of your invoice submission through a separate file, the structure file. It contains a description of which files make up the invoice submission and so we will wait processing the already uploaded files until the set is complete. The contents of the structure file looks like this:

{
    "documents": [
        {
            "purpose": "data",
            "extension": "xml",
            "count": 1
        },
        {
            "purpose": "primary",
            "extension": "pdf",
            "count": 1
        },
        {
            "purpose": "additional",
            "extension": "pdf",
            "count": 2
        }
    ]
}

You have to choose: either you always provide the same set of files, or you always provide a structure file.

Setup

At this moment the setup cannot be done through our web interface. Therefore, please contact us on helpdesk@storecove.com to setup your SFTP upload capability.

Key pair

To setup SFTP, we you need to generate an SSH keypair and send us the public part. On Linux:

ssh-keygen -t rsa -b 4096 -f id_rsa

Leave the passwords empty. Send us the file

  • id_rsa.pub

Important
Don’t send us your id_rsa file, that is to be kept private.

3.2. Software Suppliers

3.2.1. Access Point as-a Service

Software suppliers use Storecove as a Peppol Access Point to provide e-invoicing to their customers. For example, if you are an e-commerce SaaS product, Storecove would provide your e-invoicing functionality to many client businesses.

You can use Storecove for your own e-invoicing (as a a company), and for your clients (Access Point as a Service).

3.2.2. Introduction

Use the API calls

to mange your organizations and their peppol identifiers.

3.2.3. Sending

For sending, you may want to first "preflight"

to check whether a Peppol identifier can be reached on the Peppol network. Next, send your invoice using

If you send all your invoices through Storecove (i.e. to an email if we cannot send it via Peppol) you do not need to preflight.

3.2.4. Receiving

Configure the appropriate webhook. See Webhooks.

4. Best Practices

4.1. Job Queues

The Storecove API is highly available. However, that does not mean 100%. No one can ever guarantee that.

We therefore recommend that all POSTs to our API are done in a job queue. Jobs can be rescheduled to automatically retry after an (increasing) amount of time and should the job finally fail, you can investigate why and potentially reschedule it manually.

5. Storecove API Reference

5.1. Resources

5.1.1. AdditionalTaxIdentifiers

Create a new AdditionalTaxIdentifier
POST /legal_entities/{legal_entity_id}/additional_tax_identifiers
Description

Create a new AdditionalTaxIdentifier. An AdditionalTaxIdentifier is a seconday tax identifier that is used inside the EU when sending invoices to consumers. In that case, the VAT of the receiving country is used and if the sender has a local VAT identifier, that is used to identifiy the sender, instead of the sender’s origin country VAT number. To use these identifiers, use the invoice.consumerTaxMode = true property.

Parameters
Type Name Description Schema

Path

legal_entity_id
required

The id of the LegalEntity for which to create the AdditionalTaxIdentifier

integer (int64)

Body

additional_tax_identifier
required

AdditionalTaxIdentifier to create

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Get AdditionalTaxIdentifier
GET /legal_entities/{legal_entity_id}/additional_tax_identifiers/{id}
Description

Get an AdditionalTaxIdentifier

Parameters
Type Name Description Schema

Path

id
required

The id of the AdditionalTaxIdentifier

integer (int64)

Path

legal_entity_id
required

The id of the LegalEntity the AdditionalTaxIdentifier belongs to

integer (int64)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Delete AdditionalTaxIdentifier
DELETE /legal_entities/{legal_entity_id}/additional_tax_identifiers/{id}
Description

Delete an AdditionalTaxIdentifier

Parameters
Type Name Description Schema

Path

id
required

The id of the AdditionalTaxIdentifier

integer (int64)

Path

legal_entity_id
required

The id of the LegalEntity the AdditionalTaxIdentifier belongs to

integer (int64)

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Update AdditionalTaxIdentifier
PATCH /legal_entities/{legal_entity_id}/additional_tax_identifiers/{id}
Description

Update an AdditionalTaxIdentifier

Parameters
Type Name Description Schema

Path

id
required

The id of the AdditionalTaxIdentifier to be updated

integer (int64)

Path

legal_entity_id
required

The id of the LegalEntity the AdditionalTaxIdentifier belongs to

integer (int64)

Body

additional_tax_identifier
required

AdditionalTaxIdentifier to update

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

5.1.2. Administrations

Create a new Administration
POST /legal_entities/{legal_entity_id}/administrations
Description

Create a new Administration. An Administration is an email destination for purchase invoices.

Parameters
Type Name Description Schema

Path

legal_entity_id
required

The id of the LegalEntity for which to create the Administration

integer (int64)

Body

administration
required

Administration to create

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Get Administration
GET /legal_entities/{legal_entity_id}/administrations/{id}
Description

Get an Administration

Parameters
Type Name Description Schema

Path

id
required

The id of the Administration

integer (int64)

Path

legal_entity_id
required

The id of the LegalEntity the Administration belongs to

integer (int64)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Delete Administration
DELETE /legal_entities/{legal_entity_id}/administrations/{id}
Description

Delete an Administration

Parameters
Type Name Description Schema

Path

id
required

The id of the Administration

integer (int64)

Path

legal_entity_id
required

The id of the LegalEntity the Administration belongs to

integer (int64)

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Update Administration
PATCH /legal_entities/{legal_entity_id}/administrations/{id}
Description

Update an Administration

Parameters
Type Name Description Schema

Path

id
required

The id of the Administration to be updated

integer (int64)

Path

legal_entity_id
required

The id of the LegalEntity the Administration belongs to

integer (int64)

Body

administration
required

Administration to update

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

5.1.3. Discovery

Disover Network Participant Existence
POST /discovery/exists
Description

Discover if a network participant exists.

Parameters
Type Name Description Schema

Body

discoverable_participant
required

The participant to check

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Disover Network Participant
POST /discovery/receives
Description

Discover a network participant and capabilities.

Parameters
Type Name Description Schema

Body

discoverable_participant
required

The participant to check

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

5.1.4. DocumentSubmissions

* NOTE: Experimental. Only to be used for sending Invoice Response documents. * Submit a new document.
POST /document_submissions
Description

Submit a document for delivery. This endpoint will replace the /invoice_submissions endpoint, but for now should only be used to send Invoice Response doucments.

Parameters
Type Name Description Schema

Body

document_submission
required

Document to submit

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

5.1.5. InvoiceSubmissions

Submit a new invoice
POST /invoice_submissions
Description

Submit an invoice for delivery.

Parameters
Type Name Description Schema

Body

invoice_submission
required

Invoice to submit

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Preflight an invoice recipient
POST /invoice_submissions/preflight
Description

Check whether Storecove can deliver an invoice for a list of ids.

Parameters
Type Name Description Schema

Body

invoice_recipient_preflight
required

The invoice recipient to preflight

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Get InvoiceSubmission Evidence
GET /invoice_submissions/{guid}/evidence
Description

Get evidence for an InvoiceSubmission by GUID with corresponding status

Parameters
Type Name Description Schema

Path

guid
required

InvoiceSubmission GUID

string (uuid)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Consumes
  • application/json

5.1.6. LegalEntities

POST /legal_entities
Description

Create a new LegalEntity.

Parameters
Type Name Description Schema

Body

legal_entity
required

LegalEntity to create

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

GET /legal_entities/{id}
Description

Get a specific LegalEntity.

Parameters
Type Name Description Schema

Path

id
required

legal_entity id

integer (int64)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

DELETE /legal_entities/{id}
Description

Delete a specific LegalEntity.

Parameters
Type Name Description Schema

Path

id
required

legal_entity id

integer (int64)

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

PATCH /legal_entities/{id}
Description

Update a specific LegalEntity.

Parameters
Type Name Description Schema

Path

id
required

legal_entity id

integer (int64)

Body

legal_entity
required

LegalEntity updates

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

422

Unprocessable Entity

< ErrorModel > array

5.1.7. PeppolIdentifiers

Create a new PeppolIdentifier
POST /legal_entities/{legal_entity_id}/peppol_identifiers
Description

Create a new PeppolIdentifier.

Parameters
Type Name Description Schema

Path

legal_entity_id
required

The id of the LegalEntity for which to create the PeppolIdentifier

integer (int64)

Body

peppol_identifier
required

PeppolIdentifier to create

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Delete PeppolIdentifier
DELETE /legal_entities/{legal_entity_id}/peppol_identifiers/{superscheme}/{scheme}/{identifier}
Description

Delete a PeppolIdentifier.

Parameters
Type Name Description Schema

Path

identifier
required

PEPPOL identifier

string

Path

legal_entity_id
required

The id of the LegalEntity this PeppolIdentifier belongs to

integer (int64)

Path

scheme
required

PEPPOL identifier scheme id, e.g. "DE:VAT". For a full list see Peppol Participant Identifier List.

string

Path

superscheme
required

The superscheme of the identifier. Should always be "iso6523-actorid-upis".

string

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

5.1.8. PurchaseInvoices

Get Purchase invoice data as JSON
GET /purchase_invoices/{guid}
Description

Get a specific PurchaseInvoice, in JSON format. Recommended way of getting a PurchaseInvoice, since it provides the data in a JSON object and the JSON format is the richest we have that supports all features a PurchaseInvoice can have.

Parameters
Type Name Description Schema Default

Path

guid
required

The guid of the purchase invoice, from the webhook.

string (uuid)

Query

pmv
optional

The PaymentMeans version. The default (and deprecated) version 1.0 will give BankPaymentMean, DirectDebitPaymentMean, CardPaymentMean, NppPaymentMean, SeBankGiroPaymentMean, SePlusGiroPaymentMean, SgCardPaymentMean, SgGiroPaymentMean, SgPaynowPaymentMean.

Version 2.0 deprecates BankPaymentMean (now CreditTransferPaymentMean), CardPaymentMean (now CreditCardPaymentMean), NppPaymentMean (now AunzNppPayidPaymentMean), SeBankGiroPaymentMean (now SeBankgiroPaymentMean – note the lower 'g' in 'bankgiro'). It also adds OnlinePaymentServicePaymentMean, StandingAgreementPaymentMean, AunzNppPaytoPaymentMean, AunzBpayPaymentMean, AunzPostbillpayPaymentMean, AunzUriPaymentMean.

string

"1.0"

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Get Purchase invoice data as JSON with a Base64-encoded SI-1.2 UBL string
GET /purchase_invoices/{guid}/{packaging}
Description

Get a specific PurchaseInvoice. Using /json as {packaging} is recommended (in which case you can just omit it), however, this endpoint allows getting the invoice in a differently serialized format such as UBL.

Parameters
Type Name Description Schema Default

Path

guid
required

purchase invoice guid

string (uuid)

Path

packaging
required

How to package the purchase invoice. Use "json" or "ubl"

enum (json, ubl)

"json"

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Get Purchase invoice data as JSON with a Base64-encoded UBL string in the specified version
GET /purchase_invoices/{guid}/{packaging}/{package_version}
Description

Get a specific PurchaseInvoice in a non-JSON serialized format with version.

Parameters
Type Name Description Schema Default

Path

guid
required

purchase invoice guid

string (uuid)

Path

package_version
required

The version of the ubl package.

enum (original, si11, si12, si20, aunz, sg)

"si12"

Path

packaging
required

How to package the purchase invoice. Use "ubl"

enum (ubl)

"ubl"

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

5.1.9. WebhookInstances

GET a WebhookInstance
GET /webhook_instances/
Description

GET a WebhookInstance from the queue. After processing it successfully, DELETE it and GET the next one. When a 204 is received, the queue is empty and the polling process can sleep for a while.

Responses
HTTP Code Description Schema

200

Success

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

DELETE a WebhookInstance
DELETE /webhook_instances/{guid}
Description

DELETE a specific WebhookInstance

Parameters
Type Name Description Schema

Path

guid
required

WebhookInstance guid

string (uuid)

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

5.2. Definitions

5.2.1. AccountingCustomerParty

The customer receiving the invoice.

Name Description Schema

accountId
optional

The account id you assigned to the customer.

string

party
required

publicIdentifiers
optional

A list of legal and tax identifiers for this customer.

< PublicIdentifier > array

5.2.2. AccountingSupplierParty

The party sending the invoice. Most data for the AccountingSupplierParty is taken from the Storecove database, where your sender identity resides and has been validated. However, we provide a limited number of fields here that you can specify on an invoice-by-invoice basis.

Name Schema

party
optional

5.2.3. AdditionalItemProperty

An additional property for the item

Name Description Schema

name
required

The name of the property.
Minimum length : 1

string

value
required

The value of the property.

string

5.2.4. AdditionalTaxIdentifier

Name Description Schema

country
optional

The ISO3166 country code to use this identifier for in case of consumerTaxMode.
Length : 2

string

id
optional

The Storecove assigned id for the AdditionalTaxIdentifier.

integer (int64)

identifier
optional

The identifier.

string

scheme
optional

The scheme of the identifier.
Length : 2 - 64

string

superscheme
optional

The superscheme of the identifier.
Length : 2 - 64

string

5.2.5. AdditionalTaxIdentifierCreate

Name Description Schema

country
required

The ISO3166 country code to use this identifier for in case of consumerTaxMode.
Length : 2

string

identifier
required

The identifier.

string

scheme
required

The scheme of the identifier.
Length : 2 - 64

string

superscheme
required

The superscheme of the identifier. Should always be "iso6523-actorid-upis".
Length : 2 - 64

string

5.2.6. AdditionalTaxIdentifierUpdate

Name Description Schema

identifier
required

The identifier.

string

5.2.7. Address

The address

Name Description Schema

city
optional

The name of the city. Mandatory in most countries.
Minimum length : 2

string

country
required

county
optional

An optional county name.

string

street1
optional

The street name and number. Mandatory in most countries.
Minimum length : 2

string

street2
optional

The second street field. Use this if you used the first field for the building name.

string

zip
optional

The zipcode/postalzone. Mandatory unless the country does not have zip codes.
Minimum length : 2

string

5.2.8. Administration

Name Description Schema

email
optional

The email address to send the received document to
Length : 5 - 128

string

id
optional

The Storecove assigned id for the Administration.

integer (int64)

legal_entity_id
optional

The LegalEntity the Administration belongs to.

integer (int64)

package_version
optional

The version of the package.

enum (peppol_bis_v3, aunz, sg)

packaging
optional

How to package the purchase invoice.

enum (ubl)

sender_email_identity_id
optional

The id of the SenderEmailIdentity. If not provided, the Storecove default sender will be used

integer (int64)

5.2.9. AdministrationCreate

Name Description Schema

email
optional

The email address to send the received document to
Length : 5 - 128

string

legal_entity_id
optional

The LegalEntity the Administration belongs to.

integer (int64)

package_version
optional

The version of the package.
Default : "peppol_bis_v3"

enum (peppol_bis_v3, aunz, sg)

packaging
optional

How to package the purchase invoice.
Default : "ubl"

enum (ubl)

sender_email_identity_id
optional

The id of the SenderEmailIdentity. If not provided, the Storecove default sender will be used

integer (int64)

5.2.10. AdministrationUpdate

Name Description Schema

email
optional

The email address to send the received document to
Length : 5 - 128

string

package_version
optional

The version of the package.

enum (peppol_bis_v3, aunz, sg)

packaging
optional

How to package the purchase invoice.

enum (ubl)

sender_email_identity_id
optional

The id of the SenderEmailIdentity. If not provided, the Storecove default sender will be used

integer (int64)

5.2.11. AllowanceCharge

Name Description Schema

amountExcludingVat
required

The amount for the allowance or charge, excluding VAT

number

reason
optional

The reason for the allowance or charge, free text
Default : "Agreed settlement"

string

reasonCode
optional

Do not use. Contact Storecove first if you want to use this field.

string

tax
required

The tax for this allowance or charge. In the future, the taxes_duties_fees array will become the standard way of providing this information and you are invited to use that.

Tax

taxesDutiesFees
optional

An array of taxes, duties and fees for this invoice line. At this moment, multiple Tax items is allowed only for IN (India) taxes. All other countries can only have a single Tax item in this array. When used, the 'tax' element must be empty.

< Tax > array

5.2.12. Attachment

A document attachment to the invoice.

Name Description Schema

document
required

The base64 encoded version of the document attachment.
Minimum length : 5

string

filename
optional

The name of the file attachment.
Pattern : "^[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?\\.[a-zA-Z0-9-]+$"

string

mimeType
required

The document attachment mime type. Currently only application/pdf is allowed.

enum (application/pdf)

primaryImage
optional

Whether or not this document is a visual representation of the invoice data.
Default : false

boolean

5.2.13. Contact

Contact details for the invoice

Name Description Schema

email
optional

string (email)

firstName
optional

string

id
optional

Only supported for AccountingCustomerParty.
Maximal length : 20

string

lastName
optional

string

phone
optional

Maximal length : 24

string

5.2.14. Country

An ISO 3166-1 alpha-2 country code.

Type : enum (AD, AE, AF, AG, AI, AL, AM, AO, AQ, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BQ, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SX, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XI, YE, YT, ZA, ZM, ZW)

5.2.15. CurrencyCode

The ISO 4217 currency code.

Type : enum (AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BOV, BRL, BSD, BTN, BWP, BYN, BYR, BZD, CAD, CDF, CHE, CHF, CHW, CLF, CLP, CNY, COP, COU, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MUR, MVR, MWK, MXN, MXV, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, USN, UYI, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XBA, XBB, XBC, XBD, XCD, XDR, XFU, XOF, XPD, XPF, XPT, XSU, XTS, XUA, XXX, YER, ZAR, ZMW)

5.2.16. Delivery

Name Description Schema

actualDate
optional

The actual date of the delivery.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

location
optional

quantity
optional

The quantity of the delivery.

number

location

Name Description Schema

address
optional

id
optional

The location identifier.
Minimum length : 2

string

schemeAgencyId
optional

The schemeAgencyId of the location identifier (e.g. 'ZZZ')

string

schemeId
optional

The schemeId of the location identifier (e.g. 'EAN')

string

5.2.17. DiscoverableParticipant

A participant to be discovered.

Name Description Schema

documentTypes
optional

An array of document types to discover. The default is '["invoice", "creditnote"]'. This is ignored when only checking existence.

< enum (invoice, creditnote, invoice_response, order, order_response, despatch_notification, product_catalogue) > array

identifier
required

The actual identifier.
Minimum length : 1

string

metaScheme
optional

The meta scheme of the identifier. For Peppol this is always 'iso6523-actorid-upis'.
Default : "iso6523-actorid-upis"
Minimum length : 3

string

network
optional

The network to check. Currently only 'peppol' is supported.
Default : "peppol"
Minimum length : 3

string

scheme
required

The scheme of the identifier. See Peppol Participant Identifier List for a list.
Minimum length : 3

string

5.2.18. DiscoveredParticipant

A public identifier for this customer.

Name Description Schema

code
optional

The response code.

enum (OK, NOK)

email
optional

Whether or not an 'OK' response means the document will be sent via Peppol, but delivered by email. This happens in the Belgian Hermes system where all identifiers have been registered, but if the receiver hasn’t registered with a service provider, the Hermes system will send a PDF created from the electronic invoice and email that. The electronic document will itself not be emailed. Also see Hermes.

boolean

5.2.19. DocumentInvoiceResponse

The invoice response to send.

Name Description Schema

clarifications
optional

A list of clarifications why a received invoice was rejected (RE) or under query (UQ) and what action to take.

effectiveDate
optional

The date when the status became effective. Format: yyyy-mm-dd.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

note
optional

A note to add to the invoice reponse

string

responseCode
required

enum (AB, IP, UQ, RE, AP, PD)

5.2.20. DocumentSubmission

The document you want Storecove to send, with some meta-data.

Name Description Schema

attachments
optional

An array of attachments. You may provide up to 10 attchments, but the total size must not exceed 10MB after Base64 encoding.

< Attachment > array

createPrimaryImage
optional

Whether or not to create a primary image (PDF) if one is not provided.
Default : true

boolean

document
optional

idempotencyGuid
optional

A guid that you generated for this DocumentSubmission to achieve idempotency. If you submit multiple documents with the same idempotencyGuid, only the first one will be processed and any subsequent ones will trigger an HTTP 422 Unprocessable Entity response.
Length : 36

string

legalEntityId
optional

The id of the LegalEntity this document should be sent on behalf of. Either legalEntityId or receiveGuid is mandatory.

integer

receiveGuid
optional

The GUID that was in the received_invoice webhook. Either legalEntityId or receiveGuid is mandatory.

string

routing
optional

Specifies where the document is to be sent. Can be electronic identifiers or email addresses.

5.2.21. DocumentSubmissionResult

The result of a document submission

Name Description Schema

guid
optional

A (V4) GUID for the document submission

string

5.2.22. EIdentifiers

A list of electronic routing identifiers. These are the identifiers used on the Peppol network or for other destinations.

Type : < RoutingIdentifier > array

5.2.23. ErrorModel

Name Schema

details
optional

string

source
optional

string

5.2.24. Invoice

The invoice to send. Provide either invoice, or invoiceData, but not both.

Name Description Schema

accountingCost
optional

The buyer’s accounting cost centre for this invoice, expressed as text.
Minimum length : 1

string

accountingCustomerParty
required

The party the invoice is sent to.

accountingSupplierParty
optional

The party sending the invoice. Most data for the AccountingSupplierParty is taken from the Storecove database, where your sender identity resides and has been validated. However, we provide a limited number of fields (mainly contact fields) here that you can specify on an invoice-by-invoice basis. Contact us if you want to use this feature.

allowanceCharges
optional

An array of allowance charges.

< AllowanceCharge > array

amountIncludingVat
required

amountIncludingVat is important because of rounding differences. In many invoices, the sum of the line item amounts excluding VAT and the VAT amounts is not equal to first summing the line items without VAT, and then applying VAT. The difference is automatically calculated and included in the electronic invoice, so the receiving accounting package can process the electronic invoice without problems.

number

billingReference
optional

A reference to a commercial invoice or corrective invoice of which the current invoice is a correction. This field is mandatory when sending invoiceType 384.

string

buyerReference
optional

A reference provided by the buyer used for internal routing of the document.

string

consumerTaxMode
optional

Whether or not to process the invoice in consumer tax mode. In this mode, the VAT identifier of the sender will not be the default VAT identifier, but the one that matches with the country of the receiving consumer, if that additional VAT identifier for that country is available. These additional VAT identifiers need to be added to the sending LegalEntity by Storecove, so if you need to send invoices in this mode, please contact us.
Default : false

boolean

contractDocumentReference
optional

A reference to a contract or framework agreement that this invoice relates to.

string

delivery
optional

The delivery of the invoice.

documentCurrencyCode
optional

The documentCurrencyCode is the currency for the entire invoice. We currently do not support invoices in multiple currencies. If left out, will default to EUR

dueDate
optional

Format: yyyy-mm-dd.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

invoiceLines
required

An array of invoice lines.

< InvoiceLine > array

invoiceNumber
required

The invoice number you assigned to the invoice. The invoiceNumber should be unique for the legalEntityId and year of the issueDate. This means invoice numbers can be reused in different years, as is customary in some countries.
Minimum length : 1

string

invoicePeriod
optional

The period (or specific date) to which the invoice applies. Format: yyyy-mm-dd - yyyy-mm-dd.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2} - [0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

invoiceType
optional

Do not use. This field is available for legacy reasons only. If you want to send a regular invoice (aka UBL type '380'), make sure you have a positive invoice amount. For a credit note (aka UBL type '381'), simply provide a negative invoice amount. If you, in addition to a negative invoice amount, also specify a billingReferences, your invoice will become a corrective invoice (aka UBL type '384'). If your invoice is not sent in the UBL syntax, Storecove will provide the appropriate type for the syntax the invoice is sent in.
Default : "380"

enum (380, 381, 384)

issueDate
required

Format: yyyy-mm-dd.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

note
optional

A note to add to the invoice

string

orderReference
optional

A reference to an order for this invoice, assigned by the buyer. Note that this often is a key field, since many receivers of invoices will use this field to automatically match the invoice to an order they placed. Many receivers refuse invoices that cannot be automatically matched, in particular government agencies. So it is highly recommended to fill this field whenever possible.

string

paymentMeansArray
optional

An array of payment means (ways to pay the invoice).

< PaymentMeans > array

paymentMeansBic
optional

DEPRECATED. Use paymentMeansArray. The BIC (Swift) of the bank where the amount payable should be transferred to
Pattern : "^[A-Z]{6}[2-9A-Z][0-9A-NP-Z]([A-Z0-9]{3}|X{3})?$"

string

paymentMeansCode
optional

DEPRECATED. Use paymentMeansArray. How the invoice has been / will be paid. Use only online_payment_service (payment will be made or has been made by an online payment service), bank_card (e.g. debit card, credit card), direct_debit (the amount has been / will be taken out of the client’s bank account), standing_agreement (an unspecified payment means known to both buyer and seller) or credit_transfer (the buyer will do / has done a bank transfer). The numeric codes are for legacy purposes, they should not be used.

enum (online_payment_service, bank_card, direct_debit, standing_agreement, credit_transfer, se_bankgiro, se_plusgiro, aunz_npp, , 1, 30, 31, 42, 48, 49, 57, 58)

paymentMeansIban
optional

DEPRECATED. Use paymentMeansArray. The IBAN the amount payable should be transferred to

string

paymentMeansPaymentId
optional

DEPRECATED. Use the paymentId in the individual PaymentMeans object. The payment id that you will use to match the payment against the invoice.

string

paymentTerms
optional

The payment terms of the invoice.

preferredInvoiceType
optional

In auto mode, the choice between invoice or creditnote is made by Storecove based on what is appropriate for the receiver and the receiver country, in combination with the invoice amount sign. If you wish to state a preference, use this field. It is not guaranteed that the preference will be used, since it depends also on the receiver’s document capabilities.
Default : "prefer_autodetect"

enum (prefer_autodetect, prefer_invoice, prefer_creditnote)

prepaidAmount
optional

The amount already paid.

number

projectReference
optional

Information about the project this invoice relates to.

string

salesOrderId
optional

A reference to an order for this invoice, assigned by the seller.

string

selfBillingMode
optional

In self billing mode, the AccountingCustomerParty and the AccountingSupplierParty are be switched. Such an invoice can only be sent via email. Also, your account will need to allow the use of this mode, so before trying to use this please first contact Storecove.
Default : false

boolean

taxExemptReason
optional

DEPRECATED. Use Tax/category and specify this per invoice line. If you do specify this field, it will be applied to all invoice lines and it is an error to specify a Tax/category at the invoice line level. This field holds the reason no tax is present in the invoice. Note that this is an invoice level field and you cannot specify it per invoice line. This field is mandatory unless tax is present in the invoice.

enum (export, reverse_charge, zero_rated, exempt, outside_scope, intra_community)

taxPointDate
optional

The tax date is the date on which the supply of goods or of services was made or completed or the date on which the payment on account was made insofar as that date can be determined and differs from the date of the issue of the invoice. EU 2006-112 Article 226 Point 7. Note: For the Dutch TAX authorities the tac date should be the same as the issue date.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

taxSubtotals
optional

An array of tax subtotals. This element is mandatory for taxSystem 'tax_line_percentages'.

< TaxSubtotal > array

taxSystem
optional

The tax system used for the invoice. The system 'tax_line_percentages' is preferred, but for historic purposes 'tax_line_amounts is supported and default. Since not all invoice formats that we are required to send support 'tax_line_amounts' we will need to convert the invoice to the 'tax_line_percentags' system if we are forced to send the invoice in that tax system.
Default : "tax_line_amounts"

enum (tax_line_amounts, tax_line_percentages, tax_no_tax)

ublExtensions
optional

An array of ubl extensions.

< string > array

vatReverseCharge
optional

DEPRECTATED. Use taxExemptReason.
Default : false

boolean

The Payment Terms

Name Description Schema

note
optional

The note for the payment terms.

string

5.2.25. InvoiceData

The invoice to send, in base64 encoded format. Provide either invoice, or invoiceData, but not both.

Name Description Schema

conversionStrategy
optional

How to interpret the document.

enum (ubl, cii, idoc)

document
optional

The base64 encoded version of the document.
Minimum length : 5

string

5.2.26. InvoiceLine

Name Description Schema

accountingCost
optional

The buyer’s accounting cost centre for this invoice line, expressed as text.
Minimum length : 1

string

additionalItemProperties
optional

An array of additional item properties.

allowanceCharge
optional

The discount or surcharge on this item. Should be negative for discounts

number

amountExcludingVat
required

The amount excluding VAT. Should equal quantity x itemPrice + allowanceCharge.

number

buyersItemIdentification
optional

The ID the buyer assigned to this item.
Minimum length : 1

string

delivery
optional

The delivery of the invoice line.

description
optional

The description for this invoice line.
Minimum length : 1

string

invoicePeriod
optional

The period (or specific date) to which the invoice line applies. Format: yyyy-mm-dd - yyyy-mm-dd.
Pattern : "^[0-9]{4}-[0-9]{2}-[0-9]{2} - [0-9]{4}-[0-9]{2}-[0-9]{2}$"

string

itemPrice
optional

The price per item (may be fractional)

number

lineId
optional

The id for this invoice line.
Minimum length : 1

string

name
optional

A short name for this invoice line. If not provided, it will be taken from description and description will be set to an emtpy string.
Minimum length : 1

string

orderLineReferenceLineId
optional

A reference to the ID of the order. The order is specified as the orderReference at the invoice level. It is not possible to specify an orderReference at the invoice line level. An invoice MUST at this time be for a single order only.
Minimum length : 1

string

quantity
optional

The number of items (may be fractional).

number

quantityUnitCode
optional

The unit of measure that applies to the invoiced quantity. Codes for unit of packaging from UNECE Recommendation No. 21 can be used in accordance with the descriptions in the "Intro" section of UN/ECE Recommendation 20, Revision 11 (2015): The 2 character alphanumeric code values in UNECE Recommendation 21 shall be used. To avoid duplication with existing code values in UNECE Recommendation No. 20, each code value from UNECE Recommendation 21 shall be prefixed with an “X”, resulting in a 3 alphanumeric code when used as a unit of measure. Note that the following additionally allowed codes are deprecated and will be converted to C62: 04, 05, 08, 16, 17, 18, 19, 26, 29, 30, 31, 32, 36, 43, 44, 45, 46, 47, 48, 53, 54, 62, 63, 64, 66, 69, 71, 72, 73, 76, 78, 84, 90, 92, 93, 94, 95, 96, 97, 98, 1A, 1B, 1C, 1D, 1E, 1F, 1G, 1H, 1J, 1K, 1L, 1M, 1X, 2V, 2W, 3E, 3G, 3H, 3I, 4A, 4B, 4E, 5C, 5F, 5G, 5H, 5I, 5K, 5P, 5Q, A1, A25, A50, A51, A52, A57, A58, A60, A61, A62, A63, A64, A65, A66, A67, A77, A78, A79, A80, A81, A82, A83, AJ, AM, AP, AR, ARE, ATT, AV, AW, B0, B2, B36, B37, B38, B39, B40, B5, B51, B6, B65, B9, BD, BE, BG, BH, BJ, BK, BL, BO, BR, BT, BW, BX, BZ, C1, C2, C4, C5, C6, C77, C98, CA, CH, CJ, CK, CL, CO, CQ, CR, CS, CT, CU, CV, CY, CZ, D14, D28, D35, D37, D38, D39, D40, D64, D66, D67, D7, D70, D71, D72, D75, D76, D79, D8, D9, D90, D92, D96, D97, D98, D99, DC, DE, DI, DQ, DR, DRM, DS, DU, DX, DY, E2, E3, E5, EC, EP, EV, F1, F9, FB, FD, FE, FG, FM, G7, GC, GD, GH, GK, GN, GRT, GT, GW, GY, GZ, H1, H2, HAR, HD, HE, HF, HI, HJ, HK, HL, HN, HO, HP, HS, HT, HY, IC, IF, II, IL, IM, IP, IT, JB, JG, JO, JR, K5, KD, KF, KG, KS, KTM, LC, LE, LI, LJ, LX, M0, MA, MF, MK, MQ, MT, MV, N2, NB, NBB, NC, ND, NE, NG, NH, NI, NJ, NN, NPL, NPR, NQ, NR, NRL, NTT, NV, NY, OP, OZ, P0, P3, P4, P6, P7, P8, P9, PA, PB, PE, PF, PG, PK, PL, PM, PN, PT, PU, PV, PW, PY, PZ, QD, QH, QK, QT, R4, RA, RD, RG, RK, RL, RN, RO, RS, RU, S5, S6, S7, S8, SA, SD, SE, SHT, SK, SL, SN, SO, SP, SS, SST, ST, SV, T1, T4, T5, T6, T7, T8, TA, TC, TD, TE, TF, TJ, TK, TL, TN, TQ, TR, TS, TSD, TSH, TT, TU, TV, TW, TY, UA, UD, UE, UF, UH, UM, VI, VQ, VS, W4, WH, WI, WR, WW, YL, YT, Z1, Z2, Z3, Z4, Z5, Z6, Z8
Default : "C62"

enum (10, 11, 13, 14, 15, 20, 21, 22, 23, 24, 25, 27, 28, 33, 34, 35, 37, 38, 40, 41, 56, 57, 58, 59, 60, 61, 74, 77, 80, 81, 85, 87, 89, 91, 1I, 2A, 2B, 2C, 2G, 2H, 2I, 2J, 2K, 2L, 2M, 2N, 2P, 2Q, 2R, 2U, 2X, 2Y, 2Z, 3B, 3C, 4C, 4G, 4H, 4K, 4L, 4M, 4N, 4O, 4P, 4Q, 4R, 4T, 4U, 4W, 4X, 5A, 5B, 5E, 5J, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A2, A20, A21, A22, A23, A24, A26, A27, A28, A29, A3, A30, A31, A32, A33, A34, A35, A36, A37, A38, A39, A4, A40, A41, A42, A43, A44, A45, A47, A48, A49, A5, A53, A54, A55, A56, A59, A6, A68, A69, A7, A70, A71, A73, A74, A75, A76, A8, A84, A85, A86, A87, A88, A89, A9, A90, A91, A93, A94, A95, A96, A97, A98, A99, AA, AB, ACR, ACT, AD, AE, AH, AI, AK, AL, AMH, AMP, ANN, APZ, AQ, AS, ASM, ASU, ATM, AWG, AY, AZ, B1, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, B21, B22, B23, B24, B25, B26, B27, B28, B29, B3, B30, B31, B32, B33, B34, B35, B4, B41, B42, B43, B44, B45, B46, B47, B48, B49, B50, B52, B53, B54, B55, B56, B57, B58, B59, B60, B61, B62, B63, B64, B66, B67, B68, B69, B7, B70, B71, B72, B73, B74, B75, B76, B77, B78, B79, B8, B80, B81, B82, B83, B84, B85, B86, B87, B88, B89, B90, B91, B92, B93, B94, B95, B96, B97, B98, B99, BAR, BB, BFT, BHP, BIL, BLD, BLL, BP, BPM, BQL, BTU, BUA, BUI, C0, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28, C29, C3, C30, C31, C32, C33, C34, C35, C36, C37, C38, C39, C40, C41, C42, C43, C44, C45, C46, C47, C48, C49, C50, C51, C52, C53, C54, C55, C56, C57, C58, C59, C60, C61, C62, C63, C64, C65, C66, C67, C68, C69, C7, C70, C71, C72, C73, C74, C75, C76, C78, C79, C8, C80, C81, C82, C83, C84, C85, C86, C87, C88, C89, C9, C90, C91, C92, C93, C94, C95, C96, C97, C99, CCT, CDL, CEL, CEN, CG, CGM, CKG, CLF, CLT, CMK, CMQ, CMT, CNP, CNT, COU, CTG, CTM, CTN, CUR, CWA, CWI, D03, D04, D1, D10, D11, D12, D13, D15, D16, D17, D18, D19, D2, D20, D21, D22, D23, D24, D25, D26, D27, D29, D30, D31, D32, D33, D34, D36, D41, D42, D43, D44, D45, D46, D47, D48, D49, D5, D50, D51, D52, D53, D54, D55, D56, D57, D58, D59, D6, D60, D61, D62, D63, D65, D68, D69, D73, D74, D77, D78, D80, D81, D82, D83, D85, D86, D87, D88, D89, D91, D93, D94, D95, DAA, DAD, DAY, DB, DD, DEC, DG, DJ, DLT, DMA, DMK, DMO, DMQ, DMT, DN, DPC, DPR, DPT, DRA, DRI, DRL, DT, DTN, DWT, DZN, DZP, E01, E07, E08, E09, E10, E12, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, E25, E27, E28, E30, E31, E32, E33, E34, E35, E36, E37, E38, E39, E4, E40, E41, E42, E43, E44, E45, E46, E47, E48, E49, E50, E51, E52, E53, E54, E55, E56, E57, E58, E59, E60, E61, E62, E63, E64, E65, E66, E67, E68, E69, E70, E71, E72, E73, E74, E75, E76, E77, E78, E79, E80, E81, E82, E83, E84, E85, E86, E87, E88, E89, E90, E91, E92, E93, E94, E95, E96, E97, E98, E99, EA, EB, EQ, F01, F02, F03, F04, F05, F06, F07, F08, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, F25, F26, F27, F28, F29, F30, F31, F32, F33, F34, F35, F36, F37, F38, F39, F40, F41, F42, F43, F44, F45, F46, F47, F48, F49, F50, F51, F52, F53, F54, F55, F56, F57, F58, F59, F60, F61, F62, F63, F64, F65, F66, F67, F68, F69, F70, F71, F72, F73, F74, F75, F76, F77, F78, F79, F80, F81, F82, F83, F84, F85, F86, F87, F88, F89, F90, F91, F92, F93, F94, F95, F96, F97, F98, F99, FAH, FAR, FBM, FC, FF, FH, FIT, FL, FOT, FP, FR, FS, FTK, FTQ, G01, G04, G05, G06, G08, G09, G10, G11, G12, G13, G14, G15, G16, G17, G18, G19, G2, G20, G21, G23, G24, G25, G26, G27, G28, G29, G3, G30, G31, G32, G33, G34, G35, G36, G37, G38, G39, G40, G41, G42, G43, G44, G45, G46, G47, G48, G49, G50, G51, G52, G53, G54, G55, G56, G57, G58, G59, G60, G61, G62, G63, G64, G65, G66, G67, G68, G69, G70, G71, G72, G73, G74, G75, G76, G77, G78, G79, G80, G81, G82, G83, G84, G85, G86, G87, G88, G89, G90, G91, G92, G93, G94, G95, G96, G97, G98, G99, GB, GBQ, GDW, GE, GF, GFI, GGR, GIA, GIC, GII, GIP, GJ, GL, GLD, GLI, GLL, GM, GO, GP, GQ, GRM, GRN, GRO, GV, GWH, H03, H04, H05, H06, H07, H08, H09, H10, H11, H12, H13, H14, H15, H16, H18, H19, H20, H21, H22, H23, H24, H25, H26, H27, H28, H29, H30, H31, H32, H33, H34, H35, H36, H37, H38, H39, H40, H41, H42, H43, H44, H45, H46, H47, H48, H49, H50, H51, H52, H53, H54, H55, H56, H57, H58, H59, H60, H61, H62, H63, H64, H65, H66, H67, H68, H69, H70, H71, H72, H73, H74, H75, H76, H77, H79, H80, H81, H82, H83, H84, H85, H87, H88, H89, H90, H91, H92, H93, H94, H95, H96, H98, H99, HA, HBA, HBX, HC, HDW, HEA, HGM, HH, HIU, HKM, HLT, HM, HMQ, HMT, HPA, HTZ, HUR, IA, IE, INH, INK, INQ, ISD, IU, IV, J10, J12, J13, J14, J15, J16, J17, J18, J19, J2, J20, J21, J22, J23, J24, J25, J26, J27, J28, J29, J30, J31, J32, J33, J34, J35, J36, J38, J39, J40, J41, J42, J43, J44, J45, J46, J47, J48, J49, J50, J51, J52, J53, J54, J55, J56, J57, J58, J59, J60, J61, J62, J63, J64, J65, J66, J67, J68, J69, J70, J71, J72, J73, J74, J75, J76, J78, J79, J81, J82, J83, J84, J85, J87, J90, J91, J92, J93, J95, J96, J97, J98, J99, JE, JK, JM, JNT, JOU, JPS, JWL, K1, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K2, K20, K21, K22, K23, K26, K27, K28, K3, K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K42, K43, K45, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K58, K59, K6, K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K70, K71, K73, K74, K75, K76, K77, K78, K79, K80, K81, K82, K83, K84, K85, K86, K87, K88, K89, K90, K91, K92, K93, K94, K95, K96, K97, K98, K99, KA, KAT, KB, KBA, KCC, KDW, KEL, KGM, KGS, KHY, KHZ, KI, KIC, KIP, KJ, KJO, KL, KLK, KLX, KMA, KMH, KMK, KMQ, KMT, KNI, KNM, KNS, KNT, KO, KPA, KPH, KPO, KPP, KR, KSD, KSH, KT, KTN, KUR, KVA, KVR, KVT, KW, KWH, KWO, KWT, KX, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L2, L20, L21, L23, L24, L25, L26, L27, L28, L29, L30, L31, L32, L33, L34, L35, L36, L37, L38, L39, L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L50, L51, L52, L53, L54, L55, L56, L57, L58, L59, L60, L63, L64, L65, L66, L67, L68, L69, L70, L71, L72, L73, L74, L75, L76, L77, L78, L79, L80, L81, L82, L83, L84, L85, L86, L87, L88, L89, L90, L91, L92, L93, L94, L95, L96, L98, L99, LA, LAC, LBR, LBT, LD, LEF, LF, LH, LK, LM, LN, LO, LP, LPA, LR, LS, LTN, LTR, LUB, LUM, LUX, LY, M1, M10, M11, M12, M13, M14, M15, M16, M17, M18, M19, M20, M21, M22, M23, M24, M25, M26, M27, M29, M30, M31, M32, M33, M34, M35, M36, M37, M38, M39, M4, M40, M41, M42, M43, M44, M45, M46, M47, M48, M49, M5, M50, M51, M52, M53, M55, M56, M57, M58, M59, M60, M61, M62, M63, M64, M65, M66, M67, M68, M69, M7, M70, M71, M72, M73, M74, M75, M76, M77, M78, M79, M80, M81, M82, M83, M84, M85, M86, M87, M88, M89, M9, M90, M91, M92, M93, M94, M95, M96, M97, M98, M99, MAH, MAL, MAM, MAR, MAW, MBE, MBF, MBR, MC, MCU, MD, MGM, MHZ, MIK, MIL, MIN, MIO, MIU, MLD, MLT, MMK, MMQ, MMT, MND, MON, MPA, MQH, MQS, MSK, MTK, MTQ, MTR, MTS, MVA, MWH, N1, N10, N11, N12, N13, N14, N15, N16, N17, N18, N19, N20, N21, N22, N23, N24, N25, N26, N27, N28, N29, N3, N30, N31, N32, N33, N34, N35, N36, N37, N38, N39, N40, N41, N42, N43, N44, N45, N46, N47, N48, N49, N50, N51, N52, N53, N54, N55, N56, N57, N58, N59, N60, N61, N62, N63, N64, N65, N66, N67, N68, N69, N70, N71, N72, N73, N74, N75, N76, N77, N78, N79, N80, N81, N82, N83, N84, N85, N86, N87, N88, N89, N90, N91, N92, N93, N94, N95, N96, N97, N98, N99, NA, NAR, NCL, NEW, NF, NIL, NIU, NL, NM3, NMI, NMP, NPT, NT, NU, NX, OA, ODE, OHM, ON, ONZ, OPM, OT, OZA, OZI, P1, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P2, P20, P21, P22, P23, P24, P25, P26, P27, P28, P29, P30, P31, P32, P33, P34, P35, P36, P37, P38, P39, P40, P41, P42, P43, P44, P45, P46, P47, P48, P49, P5, P50, P51, P52, P53, P54, P55, P56, P57, P58, P59, P60, P61, P62, P63, P64, P65, P66, P67, P68, P69, P70, P71, P72, P73, P74, P75, P76, P77, P78, P79, P80, P81, P82, P83, P84, P85, P86, P87, P88, P89, P90, P91, P92, P93, P94, P95, P96, P97, P98, P99, PAL, PD, PFL, PGL, PI, PLA, PO, PQ, PR, PS, PTD, PTI, PTL, PTN, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Q21, Q22, Q23, Q24, Q25, Q26, Q27, Q28, Q29, Q30, Q31, Q32, Q33, Q34, Q35, Q36, Q37, Q38, Q39, Q40, Q3, QA, QAN, QB, QR, QTD, QTI, QTL, QTR, R1, R9, RH, RM, ROM, RP, RPM, RPS, RT, S3, S4, SAN, SCO, SCR, SEC, SET, SG, SIE, SM3, SMI, SQ, SQR, SR, STC, STI, STK, STL, STN, STW, SW, SX, SYR, T0, T3, TAH, TAN, TI, TIC, TIP, TKM, TMS, TNE, TP, TPI, TPR, TQD, TRL, TST, TTS, U1, U2, UB, UC, VA, VLT, VP, W2, WA, WB, WCD, WE, WEB, WEE, WG, WHR, WM, WSD, WTT, X1, YDK, YDQ, YRD, Z11, ZP, ZZ, X1A, X1B, X1D, X1F, X1G, X1W, X2C, X3A, X3H, X43, X44, X4A, X4B, X4C, X4D, X4F, X4G, X4H, X5H, X5L, X5M, X6H, X6P, X7A, X7B, X8A, X8B, X8C, XAA, XAB, XAC, XAD, XAE, XAF, XAG, XAH, XAI, XAJ, XAL, XAM, XAP, XAT, XAV, XB4, XBA, XBB, XBC, XBD, XBE, XBF, XBG, XBH, XBI, XBJ, XBK, XBL, XBM, XBN, XBO, XBP, XBQ, XBR, XBS, XBT, XBU, XBV, XBW, XBX, XBY, XBZ, XCA, XCB, XCC, XCD, XCE, XCF, XCG, XCH, XCI, XCJ, XCK, XCL, XCM, XCN, XCO, XCP, XCQ, XCR, XCS, XCT, XCU, XCV, XCW, XCX, XCY, XCZ, XDA, XDB, XDC, XDG, XDH, XDI, XDJ, XDK, XDL, XDM, XDN, XDP, XDR, XDS, XDT, XDU, XDV, XDW, XDX, XDY, XEC, XED, XEE, XEF, XEG, XEH, XEI, XEN, XFB, XFC, XFD, XFE, XFI, XFL, XFO, XFP, XFR, XFT, XFW, XFX, XGB, XGI, XGL, XGR, XGU, XGY, XGZ, XHA, XHB, XHC, XHG, XHN, XHR, XIA, XIB, XIC, XID, XIE, XIF, XIG, XIH, XIK, XIL, XIN, XIZ, XJB, XJC, XJG, XJR, XJT, XJY, XKG, XKI, XLE, XLG, XLT, XLU, XLV, XLZ, XMA, XMB, XMC, XME, XMR, XMS, XMT, XMW, XMX, XNA, XNE, XNF, XNG, XNS, XNT, XNU, XNV, XOA, XOB, XOC, XOD, XOE, XOF, XOK, XOT, XOU, XP2, XPA, XPB, XPC, XPD, XPE, XPF, XPG, XPH, XPI, XPJ, XPK, XPL, XPN, XPO, XPP, XPR, XPT, XPU, XPV, XPX, XPY, XPZ, XQA, XQB, XQC, XQD, XQF, XQG, XQH, XQJ, XQK, XQL, XQM, XQN, XQP, XQQ, XQR, XQS, XRD, XRG, XRJ, XRK, XRL, XRO, XRT, XRZ, XSA, XSB, XSC, XSD, XSE, XSH, XSI, XSK, XSL, XSM, XSO, XSP, XSS, XST, XSU, XSV, XSW, XSY, XSZ, XT1, XTB, XTC, XTD, XTE, XTG, XTI, XTK, XTL, XTN, XTO, XTR, XTS, XTT, XTU, XTV, XTW, XTY, XTZ, XUC, XUN, XVA, XVG, XVI, XVK, XVL, XVO, XVP, XVQ, XVN, XVR, XVS, XVY, XWA, XWB, XWC, XWD, XWF, XWG, XWH, XWJ, XWK, XWL, XWM, XWN, XWP, XWQ, XWR, XWS, XWT, XWU, XWV, XWW, XWX, XWY, XWZ, XXA, XXB, XXC, XXD, XXF, XXG, XXH, XXJ, XXK, XYA, XYB, XYC, XYD, XYF, XYG, XYH, XYJ, XYK, XYL, XYM, XYN, XYP, XYQ, XYR, XYS, XYT, XYV, XYW, XYX, XYY, XYZ, XZA, XZB, XZC, XZD, XZF, XZG, XZH, XZJ, XZK, XZL, XZM, XZN, XZP, XZQ, XZR, XZS, XZT, XZU, XZV, XZW, XZX, XZY, XZZ, 04, 05, 08, 16, 17, 18, 19, 26, 29, 30, 31, 32, 36, 43, 44, 45, 46, 47, 48, 53, 54, 62, 63, 64, 66, 69, 71, 72, 73, 76, 78, 84, 90, 92, 93, 94, 95, 96, 97, 98, 1A, 1B, 1C, 1D, 1E, 1F, 1G, 1H, 1J, 1K, 1L, 1M, 1X, 2V, 2W, 3E, 3G, 3H, 3I, 4A, 4B, 4E, 5C, 5F, 5G, 5H, 5I, 5K, 5P, 5Q, A1, A25, A50, A51, A52, A57, A58, A60, A61, A62, A63, A64, A65, A66, A67, A77, A78, A79, A80, A81, A82, A83, AJ, AM, AP, AR, ARE, ATT, AV, AW, B0, B2, B36, B37, B38, B39, B40, B5, B51, B6, B65, B9, BD, BE, BG, BH, BJ, BK, BL, BO, BR, BT, BW, BX, BZ, C1, C2, C4, C5, C6, C77, C98, CA, CH, CJ, CK, CL, CO, CQ, CR, CS, CT, CU, CV, CY, CZ, D14, D28, D35, D37, D38, D39, D40, D64, D66, D67, D7, D70, D71, D72, D75, D76, D79, D8, D9, D90, D92, D96, D97, D98, D99, DC, DE, DI, DQ, DR, DRM, DS, DU, DX, DY, E2, E3, E5, EC, EP, EV, F1, F9, FB, FD, FE, FG, FM, G7, GC, GD, GH, GK, GN, GRT, GT, GW, GY, GZ, H1, H2, HAR, HD, HE, HF, HI, HJ, HK, HL, HN, HO, HP, HS, HT, HY, IC, IF, II, IL, IM, IP, IT, JB, JG, JO, JR, K5, KD, KF, KG, KS, KTM, LC, LE, LI, LJ, LX, M0, MA, MF, MK, MQ, MT, MV, N2, NB, NBB, NC, ND, NE, NG, NH, NI, NJ, NN, NPL, NPR, NQ, NR, NRL, NTT, NV, NY, OP, OZ, P0, P3, P4, P6, P7, P8, P9, PA, PB, PE, PF, PG, PK, PL, PM, PN, PT, PU, PV, PW, PY, PZ, QD, QH, QK, QT, R4, RA, RD, RG, RK, RL, RN, RO, RS, RU, S5, S6, S7, S8, SA, SD, SE, SHT, SK, SL, SN, SO, SP, SS, SST, ST, SV, T1, T4, T5, T6, T7, T8, TA, TC, TD, TE, TF, TJ, TK, TL, TN, TQ, TR, TS, TSD, TSH, TT, TU, TV, TW, TY, UA, UD, UE, UF, UH, UM, VI, VQ, VS, W4, WH, WI, WR, WW, YL, YT, Z1, Z2, Z3, Z4, Z5, Z6, Z8)

sellersItemIdentification
optional

The ID the seller assigned to this item.
Minimum length : 1

string

standardItemIdentification
optional

Standardized ID for the item.
Minimum length : 1

string

standardItemIdentificationSchemeAgencyId
optional

The scheme agency for the standardized ID for the item.
Default : "9"
Minimum length : 1

string

standardItemIdentificationSchemeId
optional

The scheme for the standardized ID for the item.
Default : "GTIN"
Minimum length : 1

string

tax
optional

The tax for this invoice line. In the future, the taxes_duties_fees array will become the standard way of providing this information and you are invited to use that.

Tax

taxesDutiesFees
optional

An array of taxes, duties and fees for this invoice line. At this moment, multiple Tax items is allowed only for IN (India) taxes. All other countries can only have a single Tax item in this array. When used, the 'tax' element must be empty.

< Tax > array

5.2.27. InvoiceRecipient

The different ways to send the invoice to the recipient. The publicIdentifiers are used to send via the Peppol network, if the recipient is not registered on the Peppol network, the invoice will be sent to the email addresses in the emails property. This property is only mandatory when sending the invoice data using the Invoice property, not when sending using the InvoiceData property, in which case this information will be extracted from the InvoiceData object. If you do specify an InvoiceRecipient object and an InvoiceData object, the data from the two will be merged.

Name Description Schema

emails
optional

The email addresses the invoice should be sent to if none of the other identifiers can be used

< string (email) > array

publicIdentifiers
optional

The public identifiers for this invoice recipient. These are the identifiers used on the Peppol network. Note that when sending invoices with VAT (or with a taxExemptReason), a receiver VAT number is required and that should be one of these publicIdentifiers.

5.2.28. InvoiceRecipientPreflight

Identifies the invoice recipient to preflight

Name Description Schema

publicIdentifiers
optional

The public identifiers for this invoice recipient.

5.2.29. InvoiceResponseClarification

A clarification for why a received invoice was rejected (RE) or under query (UQ) and what action to take.

Name Description Schema

clarification
optional

A textual description of the clarification

string

clarificationCode
required

enum (REF, LEG, REC, QUA, DEL, PRI, QTY, ITM, PAY, UNR, FIN, OTH, PIN, NIN, CNF, CNP, CNA)

clarificationCodeType
required

The type of the clarification.

enum (OPStatusReason, OPStatusAction)

5.2.30. InvoiceSubmission

The invoice you want Storecove to process, with some meta-data.

Name Description Schema

attachments
optional

An array of attachments. You may provide up to 10 attchments, but the total size must not exceed 10MB after Base64 encoding.

< Attachment > array

createPrimaryImage
optional

Whether or not to create a primary image (PDF) if one is not provided.
Default : true

boolean

document
optional

DEPRECATED. Use attachments.

string

documentUrl
optional

DEPRECATED. Use attachments.

string (uri)

idempotencyGuid
optional

A guid that you generated for this InvoiceSubmission to achieve idempotency. If you submit multiple documents with the same idempotencyGuid, only the first one will be processed.
Length : 36

string

invoice
optional

invoiceData
optional

invoiceRecipient
optional

DEPRECATED. Use the routing and accountingCustomerParty.publicIdentifiers properties.

legalEntityId
optional

The id of the LegalEntity this invoice should be sent for.

integer

legalSupplierId
optional

DEPRECATED. Use legalEntityId

integer

mode
optional

DEPRECATED.

enum (direct)

routing
optional

Specifies where the invoice is to be sent. Can be electronic identifiers or email addresses.

supplierId
optional

DEPRECATED.

integer

5.2.31. InvoiceSubmissionActionEvidence

Name Description Schema

receiver_response
optional

The response the receiver sent.

string

transmission_datetime
optional

The DateTime of the transmission, as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z.

string

transmission_result
optional

The result of this transmission.

enum (unknown, accepted, rejected, send_error, internal_error)

transmission_type
optional

How the document was transmitted.

enum (email, edi, as2, peppol, sandbox)

transmitted_document
optional

The document that was transmitted.

string

5.2.32. InvoiceSubmissionEvidence

Name Description Schema

actions
optional

An array of actions taken to deliver the document.

guid
optional

The guid for the InvoiceSubmission.

string

status
optional

The overall status for this InvoiceSubmission.

string

5.2.33. InvoiceSubmissionResult

The result of an invoice submission

Name Description Schema

guid
optional

A (V4) GUID for the invoice submission

string

5.2.34. LegalEntity

Polymorphism : Composition

Name Description Schema

advertisements
optional

A list of document types to advertise. Use if this LegalEntity needs the ability to receive more than only invoice documents.

< enum (invoice, invoice_response) > array

city
optional

The city.
Length : 2 - 64

string

country
optional

county
optional

County, if applicable
Maximal length : 64

string

id
optional

The Storecove assigned id for the LegalEntity.

integer (int64)

line1
optional

The first address line.
Length : 2 - 64

string

line2
optional

The second address line, if applicable
Maximal length : 64

string

party_name
optional

The name of the company.
Length : 2 - 64

string

peppol_identifiers
optional

< PeppolIdentifier > array

public
optional

Whether or not this LegalEntity is public. Public means it will be listed in the PEPPOL directory at https://directory.peppol.eu/ which is normally what you want. If you have a good reason to not want the LegalEntity listed, provide false. This property is ignored when for country SG, where it is always true.
Default : true

boolean

tenant_id
optional

The id of the tenant, to be used in case of multi-tenant solutions. This property will included in webhook events.
Maximal length : 64

string

third_party_password
optional

The password to use to authenticate to a system through which to send the document, or to obtain tax authority approval to send it. This field is currently relevant only for India and mandatory when creating an IN LegalEntity.
Length : 2 - 64

string

third_party_username
optional

The username to use to authenticate to a system through which to send the document, or to obtain tax authority approval to send it. This field is currently relevant only for India and mandatory when creating an IN LegalEntity.
Length : 2 - 64

string

zip
optional

The zipcode.
Length : 2 - 32

string

5.2.35. LegalEntityCreate

Name Description Schema

advertisements
optional

A list of document types to advertise. Use if this LegalEntity needs the ability to receive more than only invoice documents.

< enum (invoice, invoice_response) > array

city
required

The city.
Length : 2 - 64

string

country
required

county
optional

County, if applicable
Maximal length : 64

string

line1
required

The first address line.
Length : 2 - 64

string

line2
optional

The second address line, if applicable
Maximal length : 64

string

party_name
required

The name of the company.
Length : 2 - 64

string

public
optional

Whether or not this LegalEntity is public. Public means it will be entered into the PEPPOL directory at https://directory.peppol.eu/
Default : true

boolean

tenant_id
optional

The id of the tenant, to be used in case of single-tenant solutions that share webhook URLs. This property will included in webhook events.
Maximal length : 64

string

third_party_password
optional

The password to use to authenticate to a system through which to send the document, or to obtain tax authority approval to send it. This field is currently relevant only for India and mandatory when creating an IN LegalEntity.
Length : 2 - 64

string

third_party_username
optional

The username to use to authenticate to a system through which to send the document, or to obtain tax authority approval to send it. This field is currently relevant only for India and mandatory when creating an IN LegalEntity.
Length : 2 - 64

string

zip
required

The zipcode.
Length : 2 - 32

string

5.2.36. LegalEntityUpdate

Name Description Schema

advertisements
optional

A list of document types to advertise. Use if this LegalEntity needs the ability to receive more than only invoice documents.

< enum (invoice, invoice_response) > array

city
optional

The city.
Length : 2 - 64

string

country
optional

county
optional

County, if applicable
Maximal length : 64

string

id
optional

The Storecove assigned id for the LegalEntity.

integer (int64)

line1
optional

The first address line.
Length : 2 - 64

string

line2
optional

The second address line, if applicable
Maximal length : 64

string

party_name
optional

The name of the company.
Length : 2 - 64

string

public
optional

Whether or not this LegalEntity is public. Public means it will be listed in the PEPPOL directory at https://directory.peppol.eu/ which is normally what you want. If you have a good reason to not want the LegalEntity listed, provide false. This property is ignored when for country SG, where it is always true.
Default : true

boolean

tenant_id
optional

The id of the tenant, to be used in case of multi-tenant solutions. This property will included in webhook events.
Maximal length : 64

string

third_party_password
optional

The password to use to authenticate to a system through which to send the document, or to obtain tax authority approval to send it. This field is currently relevant only for India and mandatory when creating an IN LegalEntity.
Length : 2 - 64

string

third_party_username
optional

The username to use to authenticate to a system through which to send the document, or to obtain tax authority approval to send it. This field is currently relevant only for India and mandatory when creating an IN LegalEntity.
Length : 2 - 64

string

zip
optional

The zipcode.
Length : 2 - 32

string

5.2.37. Party

A party that can receive or send invoices

Name Description Schema

address
required

companyName
required

The name of the company receiving the invoice
Minimum length : 2

string

contact
optional

5.2.38. PaymentMeans

A PaymentMeans is a way to pay the invoice.

Name Description Schema

account
optional

The account number.

string

branche_code
optional

The bank branch code. Not required for IBAN numbers. Often referred to as Swift or Bic code.

string

code
required

How the invoice has been / will be paid. The code determines which type of PaymentMeans is used and which fields are mandatory.

  • credit_transfer
    The amount is to be transfered into a bank account. Relevant additional fields:
    • account
      The account number. For New Zealand, this should hold the full 16 digit bank account number. Mandatory.
    • branche_code
      In case of an IBAN, the account alone number is sufficient. In other cases, like a BBAN, a BIC code or other additional identifier is required. For Australia, the BSB goes here. Optional.
    • holder
      The account holder name. Optional.

  • direct_debit
    Direct debit. Relevant additional fields:
    • account
      The account number from which the funds will be debited. Mandatory.
    • mandate
      The direct debit mandate id. Optional.
    • holder
      The account holder name. Optional.

  • card, bank_card (bank_card is deprecated)
    E.g. credit or debit card. Relevant additional fields:
    • account
      The card number, but never more than the last four digits. Mandatory.
    • holder
      The account holder name. Optional.
    • network
      The payment network, e.g. VISA, SEPA. Optional, but recommended since a default of "N/A" may be used if not provided.

  • online_payment_service
    E.g. Paypal. The invoice will have been prepaid. Relevant additional fields:
    • network
      The payment network, e.g. PayPal. Mandatory.

  • standing_agreement
    The payment means has been agreed out of band. Relevant additional fields: none.

  • aunz_npp_payid, aunz_npp (aunz_npp is deprecated)
    Australia/New Zealand New Payments Platform. Relevant additional fields:
    • account
      PayID. May be an email address, ABN, mobile phone number etc. Mandatory.

  • aunz_npp_payto
    Australia/New Zealand New Payments Platform. Relevant additional fields:
    • account
      Account number. Mandatory.
    • mandate
      Mandate/direct debit authority reference/PayTo Agreement. Mandatory.

  • aunz_bpay
    Australia/New Zealand New Payments Platform. Relevant additional fields:
    • account
      Biller code. Mandatory.
    • holder
      The account holder name. Optional.

  • aunz_postbillpay
    Australia/New Zealand New Payments Platform. Relevant additional fields:
    • account
      Biller code. Mandatory..
    • holder
      The account holder name. Optional.

  • aunz_uri
    Australia/New Zealand URI. Relevant additional fields:
    • account
      Payment URI. Mandatory..
    • holder
      The account holder name. Optional.

  • se_bankgiro
    Swedish Bankgiro. Relevant additional fields:
    • account
      The account number from which the funds will be debited, 7 or 8 digits. Mandatory.
    • holder
      The account holder name. Optional.


  • se_plusgiro
    Swedish Plusgiro. Relevant additional fields:
    • account
      The account number from which the funds will be debited, 2 - 8 digits. Mandatory.
    • holder
      The account holder name. Optional.


  • sg_giro
    Singapore GIRO-system (direct debit). Relevant additional fields: none.

  • sg_card
    Singapore CreditCard payment. Relevant additional fields: none.

  • sg_paynow
    Singapore PayNow Corporate. Relevant additional fields:
    • account
      The UEN, format: UENxxxxxxxxxx. Mandatory.

enum (credit_transfer, direct_debit, bank_card, credit_card, online_payment_service, standing_agreement, aunz_npp, aunz_npp_payid, aunz_npp_payto, aunz_bpay, aunz_postbillpay, aunz_uri, se_bankgiro, se_plusgiro, sg_giro, sg_card, sg_paynow)

holder
optional

The name of the account holder.

string

mandate
optional

The direct debit mandate code.

string

network
optional

The name of the card network, e.g. VISA.

string

paymentId
optional

The payment id that you will use to match the payment against the invoice.

string

5.2.39. PeppolIdentifier

Name Description Schema

identifier
optional

The identifier.
Length : 2 - 64

string

scheme
optional

The scheme of the identifier. See Peppol Participant Identifier List for a list.
Length : 2 - 64

string

superscheme
optional

The superscheme of the identifier. Should always be "iso6523-actorid-upis".
Length : 2 - 64

string

5.2.40. PeppolIdentifierCreate

Name Description Schema

identifier
required

The identifier.
Length : 2 - 64

string

scheme
required

The scheme of the identifier. See Peppol Participant Identifier List for a list.
Length : 2 - 64

string

superscheme
required

The superscheme of the identifier. Should always be "iso6523-actorid-upis".
Length : 2 - 64

string

5.2.41. PreflightInvoiceRecipientResult

The result of preflighting an invoice recipient

Name Description Schema

code
optional

The result code of the preflight request

enum (ok, nok)

5.2.42. PublicIdentifier

A public identifier for this customer.

Name Description Schema

id
required

The actual identifier.
Minimum length : 1

string

scheme
required

The scheme of the identifier. See Peppol Participant Identifier List for a list.
Minimum length : 3

string

5.2.43. PublicIdentifiers

A list of public identifiers that uniquely identify this customer.

Type : < PublicIdentifier > array

5.2.44. PurchaseInvoice

Name Description Schema

accounting
optional

DEPRECATED - The accounting details for the invoice. Will only evern contain null properties.

accounting_cost
optional

The accounting cost code.

string

allowance_charge
optional

DEPRECATED - Use the allowance_charges array.

number

allowance_charges
optional

amount_including_tax
optional

The total invoice amount payable, including tax. This is equal to the sum of the invoice_lines (amount_excluding_tax + tax.amount)

number

amount_including_vat
optional

DEPRECATED - Use amount_including_tax.

number

attachments
optional

billing_reference
optional

Reference to the previous invoice this invoice relates to.

string

buyer_reference
optional

Reference provided by the buyer. Used for routing.

string

contract_document_reference
optional

Reference to the contract.

string

delivery
optional

The details of the delivery associated with this invoice.

document
optional

DEPRECTATED. Use the new atatchments array.

string

document_currency_code
optional

The ISO 4217 currency for the invoice.

string

due_date
optional

The date the invoice must be payed by. Format "YYYY-MM-DD".

string

external_key
optional

Used for accountants. The id you specified for the organization.

string

external_user_id
optional

Used for the embedded portal retrieval service. The external_user_id you provided when the ShopAccount was created.

string

guid
optional

The GUID of the invoice

string (uuid)

invoice_lines
optional

invoice_number
optional

The invoicenumber.

string

invoice_type
optional

The type of invoice.

enum (invoice, creditnote, correctioninvoice)

issue_date
optional

The date the invoice was issued. Format "YYYY-MM-DD".

string

legal_entity_id
optional

The id of the LegalEntity the invoice was received for.

integer (int64)

note
optional

The invoice level note.

string

order_reference
optional

Reference to the order. Used for matching the invoice to an order.

string

payable_amount
optional

The total invoice amount payable including tax. This is equal to amount_including_tax + allowance_charge + payable_rounding_amount. This property is redundant and provided only to make invoice processing easier. You can also choose to only store this property, instead of the underlying fields.

number

payable_rounding_amount
optional

The difference between the invoice total and the sum of the invoice lines.

number

payment_means
optional

DEPRECATED - Use the new payment_means_array array.

payment_means_array
optional

The different payment means that can be used to pay the invoice.

payment_means_payment_id
optional

DEPRECATED - use the payment_id property in the payment_means_array

string

payment_terms_note
optional

A textual description of the payment terms.

string

period_end
optional

The end date of the period this invoice relates to. Format "YYYY-MM-DD".

string

period_start
optional

The start date of the period this invoice relates to. Format "YYYY-MM-DD".

string

prepaid_amount
optional

The amount already paid.

number

project_reference
optional

Reference to the project.

string

sender
optional

The organzation that sent the invoice.

source
optional

The source the invoice was received from.

enum (peppol, script, supplier, email)

system_generated_primary_image
optional

Whether or not the document image (PDF) was generated by Storecove. If true, it means the invoice was received without any attachments and Storecove generated one for you. If false, the invoice will contain at least one attachment, which was received from the invoice sender..

boolean

tax_point_date
optional

The date the invoice was issued for tax purposes. In most countries MUST match the issue_date. Format "YYYY-MM-DD".

string

tax_subtotals
optional

tax_system
optional

The tax system of the invoice. Either tax_line_percentages or tax_line_amounts. The first tax system means the invoice lines contain only the tax percentages and the tax amounts are included only in the tax subtotals at the invoice level and so are only calculated at the invoice level. The tax system tax_line_amounts means that in addition to the percentage, each invoice line also contains the tax amount. The tax subtotals at the invoice level are calculated as the sum of the tax of the invoice lines. The distinction between the two tax systems has has implications for rounding.

string

vat_reverse_charge
optional

DEPRECATED - This is now part of each invoice line.

boolean

PurchaseInvoice Delivery

Name Description Schema

actual_date
optional

The actual delivery date.

string

location
optional

The location the goods/services were delivered to.

party
optional

The party the goods/services were delivered to.

Location

Name Description Schema

city
optional

Address city.

string

country
optional

Address country.

string

county
optional

Address county.

string

department
optional

Department name.

string

id
optional

The id of the location.

string

line1
optional

Address line 1.

string

line2
optional

Address line 2.

string

scheme_id
optional

The scheme id for the id of the location.

string

zip
optional

Address zip code

string

PurchaseInvoice Party

Name Description Schema

name
optional

The name of the deliveyr party.

string

Payment Means - DEPRECATED

Name Description Schema

iban
optional

The IBAN to which to transfer.

string

id
optional

An id to mention in the transfer.

string

5.2.45. PurchaseInvoiceAccountingDetails

Name Description Schema

code
optional

The the code of the general ledger account.

string

list
optional

The name of the list for the code, e.g. "RGS".

string

list_version
optional

The version of the list for the code, e.g. "1.1".

string

name
optional

A textual description of the code.

string

5.2.46. PurchaseInvoiceAllowanceCharge

Name Description Schema

amount_excluding_tax
optional

The amount excluding tax.

number

amount_excluding_vat
optional

DEPRECATED - use amount_excluding_tax.

string

reason
optional

The reason for the allowance or charge.

string

tax
optional

vat
optional

5.2.47. PurchaseInvoiceAttachment

Name Description Schema

content_type
optional

The attachment content type (mime type).

string

document
optional

The Base64 encoded document attachment.

string

5.2.48. PurchaseInvoiceInvoiceLine

Name Description Schema

accounting
optional

The accounting details for the invoice line.

allowance_charge
optional

DEPRECATED - use allowance_charges.

number

allowance_charges
optional

amount_excluding_tax
optional

The amount excluding Tax. This is equal to quantity x price_amount + ∑ allowance_charges.

number

amount_excluding_vat
optional

DEPRECTATED - use amount_excluding_tax The amount excluding VAT.

number

description
optional

The description for the invoice line.

string

price_amount
optional

The price for one item, excluding VAT.

number

quantity
optional

The quantity of the item.

number

vat
optional

The VAT details for the invoice line.

VAT Details

Name Description Schema

amount
optional

The amount of VAT for the invoice line.

number

country
optional

The ISO 3166 country of the VAT for the invoice line.

string

percentage
optional

The percentage of VAT for the invoice line.

number

5.2.49. PurchaseInvoiceInvoiceLineAllowanceCharge

Name Description Schema

amount
optional

The amount of the allowance or charge.

number

5.2.50. PurchaseInvoicePaymentMeans

Name Description Schema

account
optional

The account number to which to transfer.

string

branch_code
optional

The code identifying the bank branch. May contain a BIC/SWIFT or something appropriate for the payment method, such as "NPP" for type NppPaymentMean.

string

holder
optional

The account holder name to which to transfer.

string

mandate
optional

The mandate, used only for type DirectDebitPaymentMean.

string

network
optional

The payment network. Used only for type CardPaymentType.

string

payment_id
optional

The payment id to use when making the payment. The invoice sender will use this to match the received funds to the invoice.

string

type
optional

The type of payment means. Which type are returned is determined by the &pmv= query parameter. For details see documentation for that field.

enum (BankPaymentMean, DirectDebitPaymentMean, CardPaymentMean, NppPaymentMean, SeBankGiroPaymentMean, SePlusgiroPaymentMean, SgCardPaymentMean, SgGiroPaymentMean, SgPaynowPaymentMean, CreditTransferPaymentMean, CreditCardPaymentMean, SeBankgiroPaymentMean, AunzNppPayidPaymentMean, OnlinePaymentServicePaymentMean, StandingAgreementPaymentMean, AunzNppPaytoPaymentMean, AunzBpayPaymentMean, AunzPostbillpayPaymentMean, AunzUriPaymentMean)

5.2.51. PurchaseInvoiceSender

Name Description Schema

billing_contact
optional

The billing contact for the invoice.

city
optional

The city.

string

country
optional

The country.

string

county
optional

The county.

string

department
optional

The department who sent the invoice.

string

identifiers
optional

The array of identifiers for this sender.

< PeppolIdentifier > array

line1
optional

The address

string

line2
optional

The address, line 2

string

party_name
optional

The party who sent the invoice.

string

peppol_identifiers
optional

DEPRECATED - Use the identifiers array.

zip
optional

The zip code.

string

5.2.52. PurchaseInvoiceSenderBillingContact

Name Description Schema

email
optional

The email of the billing contact.

string

first_name
optional

The first name of the billing contact.

string

last_name
optional

The last name of the billing contact.

string

5.2.53. PurchaseInvoiceTax

Name Description Schema

tax
optional

The tax element.

PurchaseInvoiceTaxElement

Name Description Schema

amount
optional

The tax country.

string

category
optional

The tax category.

string

category_code
optional

The tax category code.

string

percentage
optional

The tax percentage.

number

type
optional

The tax type.

string

5.2.54. PurchaseInvoiceTaxSubtotal

Name Description Schema

amount_excluding_tax
optional

The amount excluding tax.

number

amount_excluding_vat
optional

DEPRECATED - use amount_excluding_tax.

string

tax
optional

vat
optional

5.2.55. PurchaseInvoiceUbl

Name Description Schema

external_key
optional

Used for accountants. The id you specified for the organization.

string

external_user_id
optional

Used for the embedded portal retrieval service. The external_user_id you provided when the ShopAccount was created.

string

guid
optional

The GUID of the invoice

string (uuid)

legal_entity_id
optional

The id of the LegalEntity the invoice was received for.

integer (int64)

system_generated_primary_image
optional

Whether or not the document image (PDF) was generated by Storecove. If true, it means the invoice was received without any attachments and Storecove generated one for you. If false, the invoice will contain at least one attachment, which was received from the invoice sender.

boolean

tax_system
optional

The tax system of the invoice. Either tax_line_percentages or tax_line_amounts. The first tax system means the invoice lines contain only the tax percentages and the tax amounts are included only in the tax subtotals at the invoice level and so are only calculated at the invoice level. The tax system tax_line_amounts means that in addition to the percentage, each invoice line also contains the tax amount.

string

ubl
optional

The Base64 encoded UBL invoice.

string

5.2.56. PurchaseInvoiceVat

DEPRECATED - Use tax.

Name Description Schema

amount
optional

The VAT country.

string

percentage
optional

The VAT percentage.

string

5.2.57. RawDocumentData

A document to send, in base64 encoded format.

Name Description Schema

document
required

The base64 encoded version of the document.
Minimum length : 5

string

documentTypeId
optional

The document type id of the document. Required when parse == false.

string

parse
optional

  • NOTE: only parse == true is currently supported * * NOTE: parsing is only supported for documentType == 'invoice' * Whether or not to parse the document. If true, the data will be extracted from the document and used to construct a new document. If false, the document will be sent as is. In this case, you must ensure the document validates without any errors against the relevant validation artifacts for that processId/documentTypeId. We automatically apply updates of the validation artificats, respecting the grace period provided by the issuer. During that period, documents that validate against either the old as well as against the new artifacts are accepted. After the grace period, your document must validate against the new artifacts. You are also responsible for making sure your receiver is able to receive the updated document.
    Default** : true

boolean

parseStrategy
optional

How to parse the document. Only needed when parse == true.

enum (ubl, cii, idoc)

processId
optional

The process id of the document. Required when parse == false.

string

5.2.58. Routing

The different ways to send the invoice to the recipient. The publicIdentifiers are used to send via the Peppol network, if the recipient is not registered on the Peppol network, the invoice will be sent to the email addresses in the emails property. This property is only mandatory when sending the invoice data using the Invoice property, not when sending using the InvoiceData property, in which case this information will be extracted from the InvoiceData object. If you do specify an InvoiceRecipient object and an InvoiceData object, the data from the two will be merged.

Name Description Schema

eIdentifiers
optional

The electronic identifiers for this invoice recipient. These are the identifiers used on the Peppol network.

emails
optional

The email addresses the invoice should be sent to if none of the other identifiers can be used

< string (email) > array

5.2.59. RoutingIdentifier

An electronic routing identifier.

Name Description Schema

id
optional

The actual identifier.
Minimum length : 1

string

scheme
optional

The scheme of the identifier. See Peppol Participant Identifier List for a list.
Minimum length : 3

string

5.2.60. SendableDocument

The document to send.

Name Description Schema

documentType
required

The type of document to be sent.

enum (invoice, invoice_response)

invoice
optional

invoiceResponse
optional

rawDocumentData
optional

5.2.61. SupplierParty

A party that can send invoices

Name Schema

contact
optional

5.2.62. Tax

Name Description Schema

amount
optional

The amount of tax. Mandatory if taxSystem == 'tax_line_amounts'. However, it is best to use taxSystem tax_line_percentages and provide only the percentage, not the actual amount. The amount is then provided at the invoice level, in the taxSubtotals element.

number

category
optional

The optional category code for the tax. This is not mandatory, but highly recommended. If not provided, it will be automatically derived from the country/percentage in combination with the invoice taxPointDate (which defaults to the issueDate), but there are situations in which this fails and the category needs to be specified explicitly. In particular, there are multiple categories available for 0%. The allowed values depend on the country of the tax.

  • AU/NZ:
    • standard (S)
    • zero_rated (Z - 0%)
    • exempt (E - 0%)
    • export (G - 0%)
    • outside_scope (O - 0%)
  • EU:
    • standard (S)
    • zero_rated (Z - 0%)
    • reverse_charge (AE - 0%)
    • intra_community (K - 0%)
    • exempt (E - 0%)
    • export (G - 0%)
    • outside_scope (O - 0%)
  • SG:
    • standard (SR)
    • deemed_supply (DS)
    • srca_s (SRCA-S)
    • srca_c (SRCA-C - 0%)
    • zero_rated (ZR - 0%)
    • regulation33_exempt (ES33 - 0%)
    • nonregulation33_exempt (ESN33 - 0%)
    • outside_scope (OS - 0%)
    • not_registered (NG - 0%)
  • IN:
    • igst (IGST - 28%, 18%, 12%, 5%)
    • sgst (SGST - 14%, 9%, 6%, 2.5%)
    • cgst (CGST - 14%, 9%, 6%, 2.5%)
    • cess (CESS - 0.5%, 0.25%)
    • state_cess (SCESS - 0.5%, 0.25%)
    • zero_rated (Z - 0%)

enum (standard, zero_rated, reverse_charge, intra_community, exempt, export, outside_scope, regulation33_exempt, nonregulation33_exempt, deemed_supply, srca_s, srca_c, not_registered, igst, cgst, sgst, cess, state_cess)

country
required

percentage
optional

The percentage Tax. This should be a valid Tax percentage in the country at the time of the issueDate of this invoice. Mandatory if taxSystem == 'tax_line_percentages'

number

5.2.63. TaxSubtotal

The total amount of tax of this type in the invoice.

Name Description Schema

category
optional

The tax category. For a description see Tax

enum (standard, zero_rated, reverse_charge, intra_community, exempt, export, outside_scope, regulation33_exempt, nonregulation33_exempt, deemed_supply, srca_s, srca_c, not_registered, igst, cgst, sgst, cess, state_cess)

country
required

The country levying the tax.

percentage
required

The tax percentage. This should be a valid tax percentage in the country at the time of the taxpointDate of this invoice.

number

taxAmount
required

The amount of tax.

number

taxableAmount
required

The amount on which the tax is levied.

number

5.2.64. WebhookInstance

Name Description Schema

body
optional

The webhook body that would have been pushed if this were a push-mode webhook.

string

guid
optional

The GUID of the WebhookInstance. Use this to delete it.

string (uuid)

6. Appendix

7. Countries

The API is is generic as possible. However, some countries have specific requirements or features that are listed here.

AT - Austria

When sending invoices to the Austrian government (AT:GOV / 9915), all invoices have to be routed to 9915:b (for production) or 9915:test (for test). The 9915 identifier of the final recipient is to be included in the invoice.accountingCustomerParty.publicIdentifiers array.

Invoices to companies (AT:KUR / 9919) are routed directly to that identifier.

AU - Australia

Multiple PaymentMeans in the PaymentMeansArray are only allowed if they are of the same type.

The accountingCustomerParty.party.publicIdentifiers cannot have identifiers that overlap with the one in the sending LegalEntity. This means you cannot send to yourself.

BE - Belgium

Storecove automatically transforms the deprecated BE:CBE / 9956 to the new BE:EN / 0208, however it is recommended to use the new scheme.

Belgium has the Hermes system. This means all BE:EN numbers are registered on the Peppol network. When you create a new LegalEntity for a BE:EN number, this is automatically and transparantly transferred from Hermes to Storecove.

DE - Germany

The invoice.accountingSupplierParty.party.contact is mandatory.

The invoice.paymentMeansArray must include at least a single payment means.

When sending to businesses, the VAT number is used for routing. Some service providers register this with the "DE" prefix, some without. We check both for you, but you need to always include the "DE" in any object sent to us.

Storecove automatically transforms the deprecated DE:LID / 9958 to the new DE:LWID / 0204, however it is recommended to use the new scheme.

DK - Denmark

Danish senders must provide a legal identifier DK:DIGST / 0184.

Storecove automatically transforms the deprecated DE:LID / 9902 to the new DE:LWID / 0198, however it is recommended to use the new scheme.

FR - France

When sending invoices to the French government (Chorus Pro):

  1. All invoices have to be routed to SIRET 0009:11000201100044. There is no test environment for sending to public entities.

  2. The SIRET / 0009 identifier of the final recipient is to be included in the invoice.accountingCustomerParty.publicIdentifiers array.

  3. The service code must be sent in invoice.buyerReference.

  4. The commitment number must be sent in the invoice.orderReference.

Invoices to companies (SIRET / 0009 or SIRENE / 0002) are routed directly to that identifier.

HR - Croatia

When sending to businesses, the VAT number is used for routing. Most service providers register this without the "HR" prefix. We check both for you, but you need to always include the "HR" in any object sent to us.

IT - Italy

When using an email address to send invoices with FatturaPA attachment, make sure it is not an Italy-specific "PEC" email address. PEC (Posta Elettronica Certificata) is a closed local Italian email network run by a closed group of 19 Italian companies. These emails will bounce and you will be notified of this via webhook.

NL - The Netherlands

When sending to public entities, the invoice.accountingSupplierParty.party.contact.email is mandatory.

Dutch senders and receivers require a legal identifier. For companies, this is NL:KVK / 0106. For public entities, this is NL:OINO / 0190.

Storecove automatically transforms the deprecated NL:OIN / 9954 to the new NL:OINO / 0190, however it is recommended to use the new scheme.

NO - Norway

Storecove automatically transforms the deprecated NO:ORGNR / 9908 to the new NO:ORG / 0192. However it is recommended to use the new scheme directly.

We also transform NO:VAT / 9909 into NO:ORG / 0192.

NZ - New Zealand

New Zealand uses the NZBN to identify businesses. However, this is not an official Peppol participant identifier. In fact, it’s a GLN under the hood. So to register a New Zealand business, use the GLN identifier. In addition, when sending invoices to a New Zealand customer, make sure you include the pseudo identifier NZ:GST / SC0001 as their tax identifier.

SG - Singapore

For sending to the Singapore government there are a number of specific rules to follow:

  1. Make sure you have a CorpPass account at CorpPass portal (corppass.gov.sg)

  2. Make sure you have have an approved vendor record at Vendors@Gov (vendors.gov.sg).

  3. Route to endpoint of the Accountant-General’s Department: 0195:SGUENT08GA0028A.

  4. The property invoice.buyerReference must contain the Business Unit. This is one of this list:

  5. invoice.prepaidAmount and invoice.payableRoundingAmount are not acceptable.

  6. invoice.orderReference may be mandatory. To find out whether you need to bill against an Invoicing Instruction/Purchase Order, enquire with your client agency.

  7. When invoicing against an Invoicing Instruction/Purchase Order, invoice.invoiceLines.orderLineReferenceLineId must hold the corresponding LineID of the Order.

  8. Only a single attachment is allowed and only PDF.

When sending to Singapore companies, no specific rules apply and you can use the individual company’s UEN for routing.

8. Peppol Participant Identifier List

This is the full list of public identifier schemes.

Scheme  Scheme Numerical  Description

AD:VAT

 9922

 Andorra VAT number

AL:VAT

 9923

 Albania VAT number

AT:GOV

 9915

 Österreichisches Verwaltungs bzw. Organisationskennzeichen

AT:KUR

 9919

 Kennziffer des Unternehmensregisters

AT:VAT

 9914

 Österreichische Umsatzsteuer-Identifikationsnummer

AU:ABN

 0151

 Australian Business Number (ABN)

BA:VAT

 9924

 Bosnia and Herzegovina VAT number

BE:EN

 0208

 KBO nummer / Numéro BCE

BE:VAT

 9925

 BTW nummer / Numéro de TVA

BG:VAT

 9926

 Bulgaria VAT number

CH:UIDB

 0183

 Swiss Unique Business Identification Number (UIDB)

CH:VAT

 9927

 Switzerland VAT number

CY:VAT

 9928

 Cyprus VAT number

CZ:VAT

 9929

 Czech Republic VAT number

DE:LWID

 0204

 Leitweg ID

DE:VAT

 9930

 Umsatzsteuer-Identifikationsnummer

DK:DIGST

 0184

 DIGSTORG

DK:ERST

 0184

 ERSTORG

DUNS

 0060

 Dun and Bradstreet Ltd

EE:CC

 0191

 Estonian company code

EE:VAT

 9931

 Estonia VAT number

ES:VAT

 9920

 Agencia Española de Administración Tributaria

EU:NAL

 0130

 Directorates of the European Commission

EU:REID

 9913

 Business Registers Network

FI:OVT

 0037

 National Board of Taxes, (Verohallitus)

FR:SIRENE

 0002

 Institut National de la Statistique et des Etudes Economiques, (I.N.S.E.E.)

FR:SIRET

 0009

 DU PONT DE NEMOURS

FR:VAT

 9957

 French VAT

GB:VAT

 9932

 VAT number

GLN

 0088

 GS1 EAN Location Code. This is also the New Zealand identifier, the NZBN. To use NZBN, use GLN. See also: FAQ.

GR:VAT

 9933

 Greece VAT number

HR:VAT

 9934

 Croatia VAT number

HU:VAT

 9910

 Hungarian VAT

IBAN

 9918

 SOCIETY FOR WORLDWIDE INTERBANK FINANCIAL, TELECOMMUNICATION S.W.I.F.T

IE:VAT

 9935

 Ireland VAT number

IS:KTNR

 0196

 Icelandic National Registry

IT:CF

 9907

 Codice Fiscale

IT:CUUO

 0201

 Codice Univoco Unità Organizzativa iPA

IT:VAT

 9906

 Partita IVA

IT:IVA

 0211

 Partita IVA

LEI

 0199

 Legal Entity Identifier, ISO 17442

LI:VAT

 9936

 Liechtenstein VAT number

LT:LEC

 0200

 Legal entity code

LT:VAT

 9937

 Lithuania VAT number

LU:VAT

 9938

 Luxemburg VAT number

LV:VAT

 9939

 Latvia VAT number

MC:VAT

 9940

 Monaco VAT number

ME:VAT

 9941

 Montenegro VAT number

MK:VAT

 9942

 Macedonia, the former Yugoslav Republic of VAT number

MT:VAT

 9943

 Malta VAT number

NL:KVK

 0106

 Kamer van Koophandel nummer

NL:OINO

 0190

 Overheid Identificatie Nummer

NL:VAT

 9944

 BTW nummer

NO:ORG

 0192

 The Brønnøysund Register Centre

NO:ORGNR

 9908

 Enhetsregisteret ved Bronnoysundregisterne

PL:VAT

 9945

 Poland VAT number

PT:VAT

 9946

 Portugal VAT number

RO:VAT

 9947

 Romania VAT number

RS:VAT

 9948

 Serbia VAT number

SE:ORGNR

 0007

 The National Tax Board

SE:VAT

 9955

 Swedish VAT number

SG:UEN

 0195

 Singapore Nationwide eInvoicing Framework

SI:VAT

 9949

 Slovenia VAT number

SK:VAT

 9950

 Slovakia VAT number

SM:VAT

 9951

 San Marino VAT number

TR:VAT

 9952

 Turkey VAT number

VA:VAT

 9953

 Holy See (Vatican City State) VAT number

9. Test Identifiers

Peppol

Storecove has offers the following test identifiers to send test invoices to via the Peppol TEST network:

Country Identifier

AU

AU:ABN SC01234567890

BE

BE:EN 1112345678

DE

DE:LWID 10101010-STO-10

DE

DE:VAT DE010101010

DK

DK:DIGST 10101011

GR

GR:VAT EL999999999

IS

IS:KTNR SC239282828

IT

IT:CUUO SCSCSCS

NL

NL:KVK SC012345678

NO

NO:VAT NO007303003MVA

NZ

GLN 12345678901234567890

SE

SE:ORGNR 0012345678

SG

SG:UEN SGTST123457890SC

10. FAQ

SFTP & Email integrations

Storecove does support integrating via SFTP and email however the recommended path is to use the API. SFTP and email is only supported for single enities (e.g. companies). For more detail see our documentation for Companies.