1. Introduction

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

Receiving Purchase Invoices

For receiving invoices there are three solutions that we offer:

  • Our Portal Retrieval Service

  • The Peppol European e-invoicing network

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

All three 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.

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 sending your sales invoices to <your_company_name>@send.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 for your Clients there are three solutions that we offer:

  • Our Portal Retrieval Service

  • The Peppol European e-invoicing network

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

All three will give you not only the PDF invoice, but also the e-invoice, ready for automated processing in your accountancy software package 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 and process it.

Sending Sales Invoices

If you wish to facilitate your Clients sending sales invoices to their Customers through various channels, including the Peppol network (becoming mandatory in the EU for sending to all 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.

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

  • By sending the sales invoices to <company_name>@send.storecove.com

  • By pushing the sales invoices into our API

We have a web interface where you can view how we processed the 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 the sales invoice.

Please see Accountants for details.

Receiving invoices

For receiving invoices for your Clients there are two solutions that we offer:

  • Embedded Portal Invoice Retrieval

  • Peppol Access Point as a Service

The first allows you to white-label embed Storecove’s automated invoice retrieval solution. The embedded solution allows you to have your Customers create connections to their suppliers inside your accounting package.

The second allows you to publish your Client’s Peppol identifiers (i.e. Chambre of Commerce number, VAT number, IBAN, 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 (becoming mandatory in the EU for all 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.

Please see Software Suppliers for details.

2. Individual Companies

2.1. Sending

2.1.1. 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 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.

2.1.2. 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

  3. Pull mode

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

API call. It takes one parameter, an InvoiceRecipient 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

API call.

Submit

Submit the invoice to

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.

Pull Mode

In pull mode, you provide an API that Storecove uses to retrieve new invoices. We will periodically poll for new invoices (or process webhooks), providing a timestamp to filter so as only to receive new invoices. From the returned list we will then determine which of these can be sent via Peppol.

If you wish to use pull mode, please contact us on helpdesk@storecove.com or +31.202611791.

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.

Available in the web interface

token

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

Create your own in the web interface

Peppol Schemes List

The full list of public identifier schemes is as follows:

Scheme Description

AD:VAT

Andorra VAT number

AL:VAT

Albania VAT number

AT:CID

Firmenidentifikationsnummer der Statistik Austri

AT:GOV

Österreichisches Verwaltungs bzw. Organisationskennzeichen

AT:KUR

Kennziffer des Unternehmensregisters

AT:VAT

Österreichische Umsatzsteuer-Identifikationsnummer

BA:VAT

Bosnia and Herzegovina VAT number

BE:VAT

Belgium VAT number

BE:CBE

Belgium Crossroads Bank for Enterprises

BG:VAT

Bulgaria VAT number

CH:VAT

Switzerland VAT number

CY:VAT

Cyprus VAT number

CZ:VAT

Czech Republic VAT number

DE:VAT

Germany VAT number

DK:CPR

Danish Ministry of the Interior and Health

DK:CVR

The Danish Commerce and Companies Agency

DK:P

Danish Chamber of Commerce

DK:SE

Danish Ministry of Taxation, Central Customs and Tax Administration

DK:VANS

Danish VANS providers

DUNS

Dun and Bradstreet Ltd

EE:VAT

Estonia VAT number

ES:VAT

Agencia Española de Administración Tributaria

EU:REID

Business Registers Network

EU:VAT

National ministries of Econom

FI:OVT

National Board of Taxes, (Verohallitus)

FR:SIRENE

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

FR:SIRET

DU PONT DE NEMOURS

GB:VAT

United Kingdom VAT number

GLN

GS1

GR:VAT

Greece VAT number

HR:VAT

Croatia VAT number

HU:VAT

Hungary VAT

IBAN

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

IE:VAT

Ireland VAT number

IS:KT

Icelandic National Registry

IT:CF

TAX Authority

IT:FTI

FTI - Ediforum Italia

IT:IPA

Indice delle Pubbliche Amministrazioni

IT:SECETI

Servizi Centralizzati SECETI S.p.A.

IT:SIA

SIA-Società Interbancaria per l’Automazione S.p.A.

IT:VAT

Ufficio responsabile gestione partite IVA

LI:VAT

Liechtenstein VAT number

LT:VAT

Lithuania VAT number

LU:VAT

Luxemburg VAT number

LV:VAT

Latvia VAT number

MC:VAT

Monaco VAT number

ME:VAT

Montenegro VAT number

MK:VAT

Macedonia, the former Yugoslav Republic of VAT number

MT:VAT

Malta VAT number

NL:OIN

Dutch ‘OIN’ number

NL:KVK

Vereniging van Kamers van Koophandel en Fabrieken in Nederland

NL:VAT

Netherlands VAT number

NO:ORGNR

Enhetsregisteret ved Bronnoysundregisterne

NO:VAT

Enhetsregisteret ved Bronnoysundregisterne

PL:VAT

Poland VAT number

PT:VAT

Portugal VAT number

RO:VAT

Romania VAT number

RS:VAT

Serbia VAT number

SE:ORGNR

The National Tax Board

SE:VAT

Swedish VAT number

SI:VAT

Slovenia VAT number

SK:VAT

Slovakia VAT number

SM:VAT

San Marino VAT number

TR:VAT

Turkey VAT number

VA:VAT

Holy See (Vatican City State) VAT number

2.2. Receiving

For receiving, everything can be setup in the web interface. To receive invoices via webhooks, see Webhooks.

3. Accountants

3.1. Sending

3.1.1. 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 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.

3.1.2. 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

  3. Pull mode

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

API call. It takes one parameter, an InvoiceRecipient 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

API call.

Submit

Submit the invoice to

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.

Pull Mode

In pull mode, you provide an API that Storecove uses to retrieve new invoices. We will periodically poll for new invoices (or process webhooks), providing a timestamp to filter so as only to receive new invoices. From the returned list we will then determine which of these can be sent via Peppol.

If you wish to use pull mode, please contact us on helpdesk@storecove.com or +31.202611791.

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.

Available in the web interface

token

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

Create your own in the web interface

Peppol Schemes List

The full list of public identifier schemes is as follows:

Scheme Description

AD:VAT

Andorra VAT number

AL:VAT

Albania VAT number

AT:CID

Firmenidentifikationsnummer der Statistik Austri

AT:GOV

Österreichisches Verwaltungs bzw. Organisationskennzeichen

AT:KUR

Kennziffer des Unternehmensregisters

AT:VAT

Österreichische Umsatzsteuer-Identifikationsnummer

BA:VAT

Bosnia and Herzegovina VAT number

BE:VAT

Belgium VAT number

BE:CBE

Belgium Crossroads Bank for Enterprises

BG:VAT

Bulgaria VAT number

CH:VAT

Switzerland VAT number

CY:VAT

Cyprus VAT number

CZ:VAT

Czech Republic VAT number

DE:VAT

Germany VAT number

DK:CPR

Danish Ministry of the Interior and Health

DK:CVR

The Danish Commerce and Companies Agency

DK:P

Danish Chamber of Commerce

DK:SE

Danish Ministry of Taxation, Central Customs and Tax Administration

DK:VANS

Danish VANS providers

DUNS

Dun and Bradstreet Ltd

EE:VAT

Estonia VAT number

ES:VAT

Agencia Española de Administración Tributaria

EU:REID

Business Registers Network

EU:VAT

National ministries of Econom

FI:OVT

National Board of Taxes, (Verohallitus)

FR:SIRENE

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

FR:SIRET

DU PONT DE NEMOURS

GB:VAT

United Kingdom VAT number

GLN

GS1

GR:VAT

Greece VAT number

HR:VAT

Croatia VAT number

HU:VAT

Hungary VAT

IBAN

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

IE:VAT

Ireland VAT number

IS:KT

Icelandic National Registry

IT:CF

TAX Authority

IT:FTI

FTI - Ediforum Italia

IT:IPA

Indice delle Pubbliche Amministrazioni

IT:SECETI

Servizi Centralizzati SECETI S.p.A.

IT:SIA

SIA-Società Interbancaria per l’Automazione S.p.A.

IT:VAT

Ufficio responsabile gestione partite IVA

LI:VAT

Liechtenstein VAT number

LT:VAT

Lithuania VAT number

LU:VAT

Luxemburg VAT number

LV:VAT

Latvia VAT number

MC:VAT

Monaco VAT number

ME:VAT

Montenegro VAT number

MK:VAT

Macedonia, the former Yugoslav Republic of VAT number

MT:VAT

Malta VAT number

NL:OIN

Dutch ‘OIN’ number

NL:KVK

Vereniging van Kamers van Koophandel en Fabrieken in Nederland

NL:VAT

Netherlands VAT number

NO:ORGNR

Enhetsregisteret ved Bronnoysundregisterne

NO:VAT

Enhetsregisteret ved Bronnoysundregisterne

PL:VAT

Poland VAT number

PT:VAT

Portugal VAT number

RO:VAT

Romania VAT number

RS:VAT

Serbia VAT number

SE:ORGNR

The National Tax Board

SE:VAT

Swedish VAT number

SI:VAT

Slovenia VAT number

SK:VAT

Slovakia VAT number

SM:VAT

San Marino VAT number

TR:VAT

Turkey VAT number

VA:VAT

Holy See (Vatican City State) VAT number

3.2. Receiving

For receiving, everything can be setup in the web interface. To receive invoices via webhooks, see Webhooks.

4. Software Suppliers

4.1. Embedded Supplier Connections

4.1.1. Introduction

This API facilitates white label embedding Storecove Script Connections into your own service/product. This enables your users to manage the credentials with which Storecove retrieves invoices from suppliers, directly in your website.

4.1.2. Use

The typical use-case is as follows:

  • You show your user a list of suppliers to choose from.

  • When they click on a supplier, they provide their username/password in a modal form.

  • When they save, you create a ShopAccount via the Storecove API

You should not limit the list of suppliers to only suppliers the user does not yet have connected, since it is possible to have more than one connection to the same supplier (e.g. two mobile phone subscriptions with Vodafone with separate accounts).

The list of available suppliers can be found with this API call:

When a user connects a new supplier, you create a new ShopAccount with the following API call:

When a new invoice is retrieved, you are notified via a webhook (Webhooks).

Invoices will be retrieved from one month before the moment on which the ShopAccount was created.

Authorization failures

If your user provides the wrong credentials, the connection with the supplier cannot be created and invoices are not retrieved. The user needs to take action. A call is available to receive a list of ShopAccounts that have been diagnosed with an authorization problem:

The following are the relevant fields in each ShopAccount: id, external_user_id, sign_in_error_confirmed, sign_in_error_confirmed_at. Poll daily and process the result:

  • If a ShopAccount is on your list, but no longer in the list returned, then either the problem was resolved or it was not resolved for too many days and the ShopAccount has therefore been dropped by Storecove (currently after 30 days). In both cases, remove the id from your list. To determine what happened, request the ShopAccount by its id. You will receive a 200 or a 404.

  • If a ShopAccount is not yet on your list, add it. You can now start the process that you want to follow to alert the user. For instance, you could email them and/or show the problem in your web interface.

  • When someone changes their credentials in your web interface, remove the id from your list immediately after updating the ShopAccount via the API.

4.2. Access Point as-a Service

4.2.1. Introduction

Use the API calls

to mange your organizations and their peppol identifiers.

4.2.2. 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.

4.2.3. Receiving

Configure the appropriate webhook. See Webhooks.

5. Using the API

5.1. Tokens

To use the Storecove API, the first thing you will need to do is to create an account. You will need to create two accounts, one for development and one for production. Some accounts are automatically created in sandbox mode, but if this is not the case with your development account you can do it yourself in Settings/Billing Details.

Next, create an API token. To do this, navigate to https://www.storecove.com/en/api_keys. You will typically need only one, but should you want to change the key every so often, you can create and use more than one during your migration period.

The authentication scheme used is the OAuth2.0 Bearer Token (RFC 6750). It requires an HTTP header “Authorization” with contents “Bearer <api_token>”, e.g.

Authorization: Bearer abababababababababababababababababababab

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

5.2. Endpoint

The API endpoint is

5.3. Client Libraries

For a number of languages, we have client libraries available. 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 following shows how to setup each client.

No setup is necessary if you use this client.

To include the gem in your project, use

gem 'storecove', '~> 1.0'

Create config/initializers/storecove_api.rb:

StorecoveApi.configure do |config|
    config.api_key['Authorization'] = '<api_key>'
    config.api_key_prefix['Authorization'] = 'Bearer'
end

class StorecoveApiClient
    attr_accessor :invoice_submissions, :shop_accounts, :shop_account_requests, :shops
    def initialize
        @invoice_submissions = StorecoveApi::InvoiceSubmissionsApi.new
        @shop_accounts = StorecoveApi::ShopAccountsApi.new
        @shop_account_requests = StorecoveApi::ShopAccountRequestsApi.new
        @shops = StorecoveApi::ShopsApi.new
    end
end

5.3.1. Other Langauges

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

With this, it becomes easy to generate a client library in your favorite language. This is done through Swagger Codegen:

First, download the Java jar:

wget --output-document=swagger-codegen-cli.jar http://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.3.1/swagger-codegen-cli-2.3.1.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

5.4. Test Driving

Because of the OpenAPI 2.0 specification, it is easy to test drive the API. Go to

At the top, copy/paste the link to our OpenAPI 2.0 specification:

Next, click on the "Authorize" button on the right. In the value field enter

Bearer abababababababababababababababababababab

and click "Authorize" and then "Close". You can now use the API endpoints in the page.

5.5. 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.

5.5.1. For Sending Invoices

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",
        "status": "error"
    }]
}

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 two types of actions:

  • peppol

  • email

Each has the following possible statuses:

  • 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".

5.5.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"
}

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

endpoint.

6. API Reference

6.1. Resources

6.1.1. InvoiceSubmissions

Submit a new invoice
POST /invoice_submissions
Description

Submit an invoice for delivery.

TODO

The following contains most fields possible.

invoice_submission = StorecoveApi::InvoiceSubmission.new(
  mode: 'direct',
  legalEntityId: 1234567890,
  documentUrl: 'https://storecove.com/downloads/partner_manual.pdf',
  invoiceRecipient: StorecoveApi::InvoiceRecipient.new(id: @external_id_dev_support),
  invoice: StorecoveApi::Invoice.new(
    invoiceNumber: '201610001',
    issueDate: '2016-08-08',
    documentCurrencyCode: 'EUR',
    accountingCustomerParty: StorecoveApi::AccountingCustomerParty.new(
      party: StorecoveApi::Party.new(
        companyName: 'ManyMarkets Inc.',
        address: StorecoveApi::Address.new(
          department: 'Main Office',
          street1: 'Keizersgracht',
          number: '316',
          city: 'Amsterdam',
          zip: '1016EZ',
          country: 'NL'
        ),
        contact: StorecoveApi::Contact.new(
          firstName: 'Norm',
          lastName: 'Peters',
          email: 'norm@peters.example.com'
        )
      ),
      accountId: 'SupplierAccountCode1234'
    ),
    invoiceLines: [
      StorecoveApi::InvoiceLine.new(
        description: 'Pilot G2 Premium Retractable Gel Roller Pens, Bold Point, Blue, 12/Pack (31257)',
        id: 'ccvvffgg',
        itemPrice: 2.69,
        quantity: 3,
        amountExcludingVat: 8.07,
        tax: StorecoveApi::Tax.new(
          amount: 1.69,
          percentage: 21,
          country: 'NL'
        ),
        accountingCostCode: StorecoveApi::AccountingCostCode.new(
          code: '4206010',
          list: 'RGS',
          listVersion: '1.1',
          listAgency: 'SBR'
        ),
        invoicePeriod: '2016-07-01 - 2016-07-15'
      ),
      StorecoveApi::InvoiceLine.new(
        description: 'Elmer\'s Clear Glue Stick Class Pack, .24oz, 30/Pack',
        id: 'xxaabbcc',
        itemPrice: 4.8,
        quantity: 3.1,
        amountExcludingVat: 14.88,
        tax: StorecoveApi::Tax.new(
          amount: 3.12,
          percentage: 21,
          country: 'NL'
        ),
        accountingCostCode: StorecoveApi::AccountingCostCode.new(
          code: '4206011',
          list: 'RGS',
          listVersion: '1.1',
          listAgency: 'SBR'
        ),
        invoicePeriod: '2016-07-16 - 2016-07-31'
      )
    ],
    amountIncludingVat: 27.77,
    accountingCostCode: StorecoveApi::AccountingCostCode.new(
      code: '4206012',
      list: 'RGS',
      listVersion: '1.1',
      listAgency: 'SBR'
    ),
    dueDate: '2016-09-07',
    invoiceType: '380',
    invoicePeriod: '2016-07-01 - 2016-07-31',
    taxPointDate: '2016-08-08', # note: in some countries, like NL, this MUST match the issueDate
    buyerReference: 'a1234567',
    orderReference: 'b1234567',
    billingReference: 'c1234567',
    contractDocumentReference: 'd1234567',
    projectReference: 'e1234567',
    paymentMeansCode: nil,
    paymentMeansIban: 'NL00ABNA0123456789',
    paymentMeansPaymentId: '201610001 / XXXXX'
  )
)
begin
  client = StorecoveApiClient.new
  invoice_submission_result = client.invoice_submissions.create_invoice_submission(invoice_submission)
rescue StorecoveApi::ApiError => e
  # handle error - best use a queue manager!
  puts e.code
end

puts invoice_submission_result.guid

The following example contains only the mandatory fields.

invoice_submission = StorecoveApi::InvoiceSubmission.new(
  mode: 'direct',
  legalEntityId: 1234567890,
  invoiceRecipient: StorecoveApi::InvoiceRecipient.new(id: @external_id_dev_support),
  invoice: StorecoveApi::Invoice.new(
    invoiceNumber: '201610001',
    issueDate: '2016-08-08',
    documentCurrencyCode: 'EUR',
    accountingCustomerParty: StorecoveApi::AccountingCustomerParty.new(
      party: StorecoveApi::Party.new(
        companyName: 'ManyMarkets Inc.',
        address: StorecoveApi::Address.new(
          country: 'NL'
        )
      )
    ),
    invoiceLines: [
      StorecoveApi::InvoiceLine.new(
        description: 'Pilot G2 Premium Retractable Gel Roller Pens, Bold Point, Blue, 12/Pack (31257)',
        amountExcludingVat: 8.07,
        tax: StorecoveApi::Tax.new(
          amount: 1.69,
          percentage: 21,
          country: 'NL'
        )
      ),
      StorecoveApi::InvoiceLine.new(
        description: 'Elmer\'s Clear Glue Stick Class Pack, .24oz, 30/Pack',
        amountExcludingVat: 14.88,
        tax: StorecoveApi::Tax.new(
          amount: 3.12,
          percentage: 21,
          country: 'NL'
        )
      )
    ],
    amountIncludingVat: 27.77
  )
)
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.

TODO
invoice_recipient_preflight = StorecoveApi::InvoiceRecipientPreflight.new(
    StorecoveApi::InvoiceRecipient.new(
        publicIdentifiers: [
            StorecoveApi::PublicIdentifier.new(
                id: '810418052',
                scheme: 'NO:ORGNR'
            )
        ]
    )
)
client = StorecoveApiClient.new
begin
    preflight_invoice_recipient_result = client.preflight_invoice_recipient(invoice_recipient_preflight)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
    puts e.code
end

puts preflight_invoice_recipient_result.code # will be 'ok' or 'nok'
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

6.1.2. 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

6.1.3. 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_schemes_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

6.1.4. PurchaseInvoices

Get Invoice
GET /purchase_invoices/{guid}
Description

Get a specific Invoice.

Parameters
Type Name Description Schema

Path

guid
required

purchase invoice guid

string (uuid)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

Get Invoice as UBL
GET /purchase_invoices/{guid}/ubl
Description

Get a specific Invoice in UBL form.

Parameters
Type Name Description Schema

Path

guid
required

purchase invoice guid

string (uuid)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

404

Not Found

No Content

6.1.5. ShopAccountRequests

Create ShopAccountRequest
POST /shop_account_requests
Description

Create a new ShopAccountRequest

TODO
shop_account_request_input = StorecoveApi::ShopAccountRequestInput.new
shop_account_request_input.username = 'username'
shop_account_request_input.password = 'secret'
shop_account_request_input.request_name = 'Storecove'
shop_account_request_input.password = 'https:/www.storecove.com/'
shop_account_request_input.external_user_id = '<your entity id>'
client = StorecoveApiClient.new
begin
    shop_account_request_result = client.shop_account_requests.create_shop_account_request(shop_account_request_input)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
    puts e.code
end
Parameters
Type Name Description Schema

Body

shop_account_request
required

ShopAccountRequest to add

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Get ShopAccountRequests
GET /shop_account_requests
Description

Retrieve all active ShopAccountRequests for one of your entities.

TODO
client = StorecoveApiClient.new
shop_account_requests = client.shop_account_requests.shop_account_requests_index('your_entity_id')
Parameters
Type Name Description Schema

Query

external_user_id
required

Filter by the external_user_id

string

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

Get ShopAccountRequest
GET /shop_account_requests/{id}
Description

Show a specific ShopAccountRequest

TODO
client = StorecoveApiClient.new
shop_account_request = client.shop_account_requests.get_shop_account_request(1234567890)
Parameters
Type Name Description Schema

Path

id
required

shop_account_request id

integer (int64)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

Delete ShopAccountRequest
DELETE /shop_account_requests/{id}
Description

Delete a specific ShopAccountRequest

TODO
client = StorecoveApiClient.new
begin
    client.shop_account_requests.delete_shop_account_request(1234567890)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
end
Parameters
Type Name Description Schema

Path

id
required

shop_account_request id

integer (int64)

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

Update ShopAccountRequest
PATCH /shop_account_requests/{id}
Description

Update a specific ShopAccountRequest

TODO
shop_account_request_update = StorecoveApi::ShopAccountUpdate.new
shop_account_request_update.username = 'newusername'
shop_account_request_update.password = 'newsecret'
shop_account_request_update.email = 'newsendto@example.com'
client = StorecoveApiClient.new
begin
    shop_account_request_result = client.shop_account_requests.update_shop_account_request(shop_account_request_update)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
    puts e.code
end
Parameters
Type Name Description Schema

Path

id
required

shop_account_request id

integer (int64)

Body

shop_account_request
required

ShopAccountRequest updates

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

6.1.6. ShopAccounts

Create ShopAccount
POST /shop_accounts
Description

Create a new ShopAccount.

TODO
shop_account_input = StorecoveApi::ShopAccountInput.new
shop_account_input.username = 'username'
shop_account_input.password = 'secret'
shop_account_input.shop_id = 123456789
shop_account_input.external_user_id = 'your_user_id'
shop_account_input.email = 'sendto@example.com'
client = StorecoveApiClient.new
begin
    shop_account_result = client.shop_accounts.create_shop_account(shop_account_input)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
    puts e.code
end
Parameters
Type Name Description Schema

Body

shop_account
required

ShopAccount to add

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

Consumes
  • application/json

Get ShopAccounts for an entity
GET /shop_accounts
Description

Retrieve all active ShopAccounts for one of your entities.

TODO
client = StorecoveApiClient.new
shop_accounts = client.shop_accounts.shop_accounts_index('your_entity_id')
Parameters
Type Name Description Schema

Query

external_user_id
required

Filter by the external_user_id

string

Responses
HTTP Code Description Schema

200

Success

< ShopAccountResult > array

401

Unauthorized

No Content

403

Forbidden

No Content

Get ShopAccounts with authorization failures
GET /shop_accounts/auth_failures
Description

Get ShopAccounts with authorization failures.

TODO
client = StorecoveApiClient.new
shop_accounts = client.shop_accounts.shop_accounts_auth_failures
Responses
HTTP Code Description Schema

200

Success

< ShopAccountResult > array

401

Unauthorized

No Content

403

Forbidden

No Content

Get ShopAccount
GET /shop_accounts/{id}
Description

Get a specific ShopAccount.

TODO
client = StorecoveApiClient.new
shop_account = client.shop_accounts.get_shop_account(1234567890)
Parameters
Type Name Description Schema

Path

id
required

shop_account id

integer (int64)

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

Delete ShopAccount
DELETE /shop_accounts/{id}
Description

Delete a specific ShopAccount.

TODO
client = StorecoveApiClient.new
begin
    client.shop_accounts.delete_shop_account(1234567890)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
end
Parameters
Type Name Description Schema

Path

id
required

shop_account id

integer (int64)

Responses
HTTP Code Description Schema

204

Success

No Content

401

Unauthorized

No Content

403

Forbidden

No Content

Update ShopAccount
PATCH /shop_accounts/{id}
Description

Update a specific ShopAccount.

TODO
shop_account_update = StorecoveApi::ShopAccountUpdate.new
shop_account_update.username = 'newusername'
shop_account_update.password = 'newsecret'
shop_account_update.email = 'newsendto@example.com'
client = StorecoveApiClient.new
begin
    shop_account_result = client.shop_accounts.update_shop_account(shop_account_update)
rescue StorecoveApi::ApiError => e
    # handle error - best use a queue manager!
    puts e.code
end
Parameters
Type Name Description Schema

Path

id
required

shop_account id

integer (int64)

Body

shop_account
required

ShopAccount updates

Responses
HTTP Code Description Schema

200

Success

401

Unauthorized

No Content

403

Forbidden

No Content

422

Unprocessable Entity

< ErrorModel > array

6.1.7. Shops

Get Shops
GET /shops
Description

Get all available shops.

curl -X GET --header 'Accept: application/json' --header 'Authorization: <api_key>' 'https://api.storecove.com/api/v2/shops'

Response:

[
  {
    "id": 0,
    "name": "string",
    "logo": {
      "thumb": "string",
      "small": "string",
      "medium": "string"
    },
    "description": "string",
    "legal_entities": [
      {
        "name": "string",
        "line1": "string",
        "zip": "string",
        "city": "string",
        "county": "string",
        "country": "string",
        "identifiers": [
          {
            "identifier": "string",
            "scheme": "string",
            "scheme_agency": "string"
          }
        ]
      }
    ]
  }
]
client = StorecoveApiClient.new
shops = client.shops.shops_index
Parameters
Type Name Description Schema

Query

cc
optional

Include creditcards in list. Add ?cc=true to URL to use.

string

Responses
HTTP Code Description Schema

200

Success

< Shop > array

401

Unauthorized

No Content

6.2. Definitions

6.2.1. AccountingCostCode

The code in the chart of accounts used by the receiver of the invoice.

Name Description Schema

code
optional

The buyer’s accounting cost centre for this invoice(line), expressed as a code
Minimum length : 1

string

list
optional

The identification of a list of codes.
Minimum length : 1

string

listAgency
optional

An agency that maintains one or more lists of codes.
Minimum length : 1

string

listVersion
optional

The version of the list of codes.
Minimum length : 1

string

6.2.2. AccountingCustomerParty

The customer receiving the invoice.

Name Description Schema

accountId
optional

The account id you assigned to the customer.

string

party
required

6.2.3. 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

6.2.4. Address

The address

Name Description Schema

city
optional

The name of the city.
Minimum length : 2

string

country
required

county
optional

An optional county name.

string

department
optional

The department

string

number
optional

This number will be added to the street1 element. The number can be provided in this field OR in the street1 field, but not in both.

string

postbox
optional

The postbox number

string

street1
optional

The street name. The number can be provided in this fiedl OR in the number field, but not in both.
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.
Minimum length : 2

string

6.2.5. AllowanceCharge

Name Description Schema

amountExcludingVat
required

The amount for the allowance charge, excluding VAT

number

reason
optional

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

string

reasonCode
optional

The reason code for the allowance charge. Uses list http://www.unece.org/trade/untdid/d12a/tred/tred4465.htm , defaults to 1 - Agreed settlement
Default : "1"

string

tax
required

The tax for this allowance charge.

Tax

Tax

Name Description Schema

amount
required

The amount of VAT. Should equal percentage x amountExcludingVat. A difference of 5 cents or 1% between the calculated value and the provided value is allowed.

number

country
required

percentage
required

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

number

6.2.6. BuyerCustomerParty

The buyer receiving the invoice.

Name Description Schema

accountId
optional

The account id you assigned to the customer.

string

party
required

6.2.7. Contact

Contact details for the invoice

Name Description Schema

email
optional

string (email)

firstName
optional

string

lastName
optional

string

phone
optional

Only supported for AccountingSupplierParty.

string

6.2.8. 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, YE, YT, ZA, ZM, ZW)

6.2.9. 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)

6.2.10. 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

6.2.11. ErrorModel

Name Schema

details
optional

string

source
optional

string

6.2.12. Invoice

The invoice to send

Name Description Schema

accountingCost
optional

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

string

accountingCostCode
optional

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 here that you can specify on an invoice-by-invoice basis.

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

buyerCustomerParty
optional

The buyer party.

buyerReference
optional

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

string

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

Use 380 for a regular invoice, 381 for a credit invoice, 384 for a corrective invoice. Note that invoiceType 381 must be for a positive amount! In case of invoiceType 384, the billingReference field must contain the invoiceNumber of the invoice being corrected.
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.

string

paymentMeansCode
optional

Leave empty. Defaults to 31 if an IBAN is provided, otherwise defaults to 1. But leave empty.

string

paymentMeansIban
optional

The IBAN the amount payable should be transferred to

string

paymentMeansPaymentId
optional

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

string

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

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

ublExtensions
optional

An array of ubl extensions.

< string > array

vatReverseCharge
optional

Whether or not the invoice is reverse charged
Default : false

boolean

6.2.13. InvoiceLine

Name Description Schema

accountingCost
optional

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

string

accountingCostCode
optional

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. A difference of 5 cents or 1% between the calculated value and the provided value is allowed.

number

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

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

quantity
optional

The number of items (may be fractional).

number

quantityUnitCode
optional

A unit code from UNECE Rec20. The complete list can be found at http://www.datypic.com/sc/ubl20/a-unitCode-4.html
Default : "C62"

string

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.

Tax

Tax

Name Description Schema

amount
required

The amount of VAT. Should equal percentage x amountExcludingVat. A difference of 5 cents or 1% between the calculated value and the provided value is allowed.

number

country
required

percentage
required

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

number

6.2.14. InvoiceRecipient

Ids that identify this invoice recipient. The list of identifiers should match with the accountingCustomerParty. I.e., you should not be sending an invoice for one accountingCustomerParty to the publicIdentifier of another.

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

id
optional

DEPRECATED. Use widgetIdentification.id
Minimum length : 2

string

publicIdentifiers
optional

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

widgetIdentification
optional

The identification for the identifier related to the Storecove Destination Configuration widget.

6.2.15. InvoiceRecipientPreflight

Identifies the invoice recipient to preflight

Name Description Schema

publicIdentifiers
optional

The public identifiers for this invoice recipient.

supplierId
optional

DEPRECATED.

integer

widgetIdentification
optional

The identification for the identifier related to the Storecove Destination Configuration widget.

6.2.16. InvoiceSubmission

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

Name Description Schema

document
optional

The invoice in PDF form. The document should be base64 encoded and the enocded string length should not exceed 2MB (2097152 bytes).
Minimum length : 5

string

documentUrl
optional

A URL to retrieve the PDF document via HTTP GET. If the link expires, please allow at least 7 days of validity.

string (uri)

invoice
required

invoiceRecipient
required

legalEntityId
optional

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

integer

legalSupplierId
optional

DEPRECATED. Use legalEntityId

integer

mode
optional

DEPRECATED. The mode in which to run this invoice submission.

enum (direct)

supplierId
optional

DEPRECATED.

integer

6.2.17. InvoiceSubmissionResult

The result of an invoice submission

Name Description Schema

guid
optional

A (V4) GUID for the invoice submission

string

6.2.18. LegalEntity

Polymorphism : Composition

Name Description Schema

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

zip
optional

The zipcode.
Length : 2 - 32

string

6.2.19. LegalEntityCreate

Name Description Schema

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

zip
required

The zipcode.
Length : 2 - 32

string

6.2.20. LegalEntityIdentifier

Name Schema

identifier
optional

string

scheme
optional

string

scheme_agency
optional

string

6.2.21. LegalEntityShop

Name Schema

city
optional

string

country
optional

string

county
optional

string

identifiers
optional

line1
optional

string

line2
optional

string

name
optional

string

zip
optional

string

6.2.22. LegalEntityUpdate

Name Description Schema

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

zip
optional

The zipcode.
Length : 2 - 32

string

6.2.23. Logos

Name Schema

medium
optional

string

small
optional

string

thumb
optional

string

6.2.24. 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

6.2.25. PeppolIdentifier

Name Description Schema

identifier
optional

The identifier.
Length : 2 - 64

string

scheme
optional

The scheme of the identifier. See Peppol Schemes 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

6.2.26. PeppolIdentifierCreate

Name Description Schema

identifier
required

The identifier.
Length : 2 - 64

string

scheme
required

The scheme of the identifier. See Peppol Schemes 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

6.2.27. PreflightInvoiceRecipientResult

The result of preflighting an invoice recipient

Name Description Schema

code
optional

The result code of the preflight request

enum (ok, nok)

6.2.28. PublicIdentifier

A public identifier for this customer.

Name Description Schema

id
required

The actual identifier.
Minimum length : 2

string

scheme
required

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

string

6.2.29. PublicIdentifiers

A list of public identifiers that uniquely identifiy this customer.

Type : < PublicIdentifier > array

6.2.30. PurchaseInvoice

Name Description Schema

accounting
optional

The accounting details for the invoice.

allowance_charge
optional

A correction on the amount to pay, for instance if the invoice has been prepaid, in which case it will be negative.

number

amount_including_vat
optional

The total invoice amount payable, including VAT. This is equal to the sum of the invoice_lines (amount_excluding_vat + vat.amount)

number

billing_reference
optional

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

string

buyer_reference
optional

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

string

contract_document_reference
optional

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

string

document
optional

The Base64 encoded PDF document associated with the invoice.

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)

payable_amount
optional

The total invoice amount payable including VAT. This is equal to amount_including_vat + allowance_charge + payable_rounding_amount. This property is redundant and provided only to make invoice processing more easy. 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

How the invoice can be paid.

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

sender
optional

The organzation that sent the invoice.

source
optional

The source the invoice was received from.

enum (peppol, script, supplier, email)

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

vat_reverse_charge
optional

Whether or not the invoice is reverse charged.

boolean

Payment Means

Name Description Schema

iban
optional

The IBAN to which to transfer.

string

id
optional

An id to mention in the transfer.

string

6.2.31. 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 descroption of the code.

string

6.2.32. PurchaseInvoiceInvoiceLine

Name Description Schema

accounting
optional

The accounting details for the invoice line.

allowance_charge
optional

The adjustment to the price, for instance a discount.

number

amount_excluding_vat
optional

The amount excluding VAT. This is equal to quantity x price_amount + allowance_charge. This property is redundant and provided only to make invoice processing more easy. You can also choose to only store this property, instead of the underlying fields.

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

6.2.33. 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

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

< PeppolIdentifier > array

zip
optional

The zip code.

string

6.2.34. 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

6.2.35. 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)

ubl
optional

The Base64 encoded UBL invoice.

string

6.2.36. Shop

Name Description Schema

description
optional

string

id
optional

integer (int64)

legal_entities
optional

< LegalEntityShop > array

logo
optional

name
optional

string

purpose
optional

The purpose of the shop. Either "invoice" or "statement"

string

6.2.37. ShopAccountInput

Name Description Schema

email
optional

This is email address determines where the invoices for all ShopAccounts in the same external_user_id group are sent. Each time you create or update a ShopAccount for an external_user_id and also provide email, the email destination for all the ShopAccounts in the external_user_id group are updated at the same time.

We suggest you provide an immutable email address. If your user can change the email address to which the invoices are to be sent, then you will need to do an update for one of the ShopAccounts for that user in order for Storecove to start using the new email address.

Note that this field is mandatory for the first ShopAccount that you create for an entity.

string

external_user_id
required

The external_user_id is what identifies the entity for which you create this ShopAccount. This could be a user, however, if your users can manage multiple organizations/administrations, then it is a better idea to put the organization/administration identifier in this field, because the external_user_id groups the ShopAccounts into a set that all deliver their invoices to the same destination (typically an email address).

string

password
required

The password for the account.

string

shop_id
required

The id of the Shop the account is for.

integer (int64)

username
required

The username for the account. The username needs to be unique in combination with the shop_id.

string

6.2.38. ShopAccountRequestInput

Name Schema

external_user_id
required

string

password
required

string

request_name
required

string

request_url
required

string

username
required

string

6.2.39. ShopAccountRequestResult

Name Schema

external_user_id
optional

string

id
optional

integer (int64)

request_name
optional

string

request_url
optional

string

username
optional

string

6.2.40. ShopAccountRequestUpdate

Name Schema

password
optional

string

request_name
optional

string

request_url
optional

string

username
optional

string

6.2.41. ShopAccountResult

Name Description Schema

email
optional

string

external_user_id
optional

string

from_date
optional

The date from invoices will be collected. This field defaults to the first day of the month the ShopAccount was created in.

string (date)

id
optional

The Storecove id for the ShopAccount

integer (int64)

shop
optional

sign_in_error_confirmed
optional

Whether or not Storecove has detected and confirmed a sign-in failure. This field is reset to false each time a ShopAccount is updated and the username or password has changed.

boolean

sign_in_error_confirmed_at
optional

The date on which the sign-in error was confirmed.

string (date)

username
optional

string

6.2.42. ShopAccountUpdate

Name Description Schema

email
optional

string

password
optional

string

username
optional

string

6.2.43. SupplierParty

A party that can send invoices

Name Schema

contact
optional

6.2.44. WidgetIdentification

The identification for the identifier related to the Storecove Destination Configuration widget.

Name Description Schema

id
required

Your id for this organization. This should match the id that you use for the Storecove widget (if you use that).
Minimum length : 2

string

legalEntityId
required

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

integer