Introduction

The e-Invoice Connect API is created as a means to enable integrating e-Invoice Connect into other products that want to use e-invoicing and leverage its functionality.

The API is built around these major pieces of functionality provided by e-Invoice Connect:

  • Creation and setup of member accounts

  • Invoice delivery and status management

  • Invoice sending

  • Recipient search

The API is implemented as a REST web service and is available at https://web.invoiceportal.net/api.

The default and main used media type to represent resources that can be exchanged with the service is JSON. Thus use the Accept and Content-Type standard HTTP request headers and set them to application/json.

Find more details about the requirements to calling the API in the security section.

The API has a unified structure and defines some endpoints as collection resources and the rest as singular resources. As it can be derived from the two resource types naming, a collection resource returns you a collection of items that represent some business objects, like member, address, invoice, and so on. The other type of resources are singular, and they represent exactly one business object.

To refer a singular resource, you need to know its parent collection resource endpoint and the resource ID assigned to it by the service to build the resource unique URI.

The collection resources return information about business objects they contain always in a short summary form, whereas a request to a singular resource with a few exceptions always returns a larger set of data fully describing the found business object.

The API offers a means for paging large collections.

Member Account Creation and Setup

This major piece of the API defines how to create and set up an e-Invoice Connect member account, which is necessary to send and receive invoices with e-Invoice Connect.

To create a valid account in e-Invoice Connect, provide a few pieces of essential information that combined define a party. Every member requires the following:

  • A party identifier (an organization number)

  • A legal address

  • A user

In addition, a new member must be created in at least one of the two business roles, because an account that can neither receive nor send invoices is of no use:

  • A recipient, which additionally requires a recipient address

  • A sender, which additionally requires the restricted sendingEnabled property set to true and a payment means

A member can be created in both roles at once. A creation request that does not meet the requirements of at least one role is rejected, see Create a new member.

If a member account is being created only for invoice sending, specifying a recipient address may be omitted. Such a member is created with receiving disabled and is registered as a sender straight away, so that no follow-up request is needed before invoices can be submitted on its behalf.

For each of these four types of objects, there are separate collection resource endpoints that are intended to manage them.

A member created via the API by a product integrated with e-Invoice Connect becomes associated with that product.

Member endpoint

This endpoint is a collection resource that manages members and member settings.

List members / member lookup

Returns a list of members existing in e-Invoice Connect.

GET /api/members HTTP/1.1

Path parameters

No parameters.

Query parameters

Parameter Type Description

q

Object

Optional extended query for member lookup. The parameters that can be specified for lookup are:

1. identifier - party identifier value

2. countryId - country ID

3. type - party identifier type

4. detailedType - party identifier detailedType

sort

String

Optional sorting parameter. The properties that can be specified for sorting are:

1. id - member ID

2. status - member status

3. legalName - member legal name

Supports standard paging query parameters.

Request fields

No request body.

Response fields

Path Type Description

page

Number

Page number.

count

Number

Actual size of content array (number of items).

total

Number

Total number of existing items.

pages

Number

Total number of pages with current page size.

items

Array

Array of members.

items[].id

Number

Member unique ID.

items[].legalName

String

Member name.

items[].status

String

Member status. The field can have the following values and in ascending order sorts as PendingApproval, Pending, Active, Blocked, Unregistered.

Example request

$ curl 'https://web.invoiceportal.net/api/members' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 338

{
  "page" : 1,
  "count" : 3,
  "total" : 3,
  "pages" : 1,
  "items" : [ {
    "id" : 43,
    "legalName" : "Test Member43",
    "status" : "Active"
  }, {
    "id" : 44,
    "legalName" : "Test Member44",
    "status" : "Active"
  }, {
    "id" : 45,
    "legalName" : "Test Member45",
    "status" : "Active"
  } ]
}

Get member details

Returns detailed information about a member existing in e-Invoice Connect.

From the security perspective and to avoid disclosure of personal identifiable information the API calls from a product integrated with e-Invoice Connect for retrieving information about a member that is not associated with that product return a reduced set of fields in response. The descriptions provided in the response field list below cover all possible response fields.

GET /api/members/43 HTTP/1.1

Path parameters

Table 1. /members/{memberId}
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Member unique ID.

legalName

String

Member name.

status

String

Member status. The field is mainly either Active or Unregistered, but it also can be set by the service to PendingApproval, Pending, Blocked.

product

String

A product the member belongs to.

apiEnabled

Boolean

The setting that enables or disables access to the member via the API.

sendingEnabled

Boolean

The setting that enables or disables ability of the member to submit invoices via the API.

selfBillingEnabled

Boolean

Deprecated: use selfBillingSendEnabled. Always mirrors the self-billing send setting. The setting that enables self-billing submissions for a buyer. For correct configuration sending must be active and additional configuration might be needed if Peppol exchange has been setup.

selfBillingSendEnabled

Boolean

The setting that enables self-billing submissions in the role of a buyer. Sending must be active. Replaces the deprecated selfBillingEnabled field, which it always equals.

selfBillingReceiveEnabled

Boolean

The setting that enables receiving self-billing documents in the role of a supplier. Receiving must be active.

autoremindInvites

Boolean

The auto reminder setting value

noDaysToKeepNonRejectableInvoices

Number

Number of days until auto accepting invoices with errors for which sender cannot be notified. 0 to auto accept without delay.

noDaysToKeepRejectedInvoices

Number

Number of days until auto rejecting invoices with errors for which sender can be notified. 0 to disable management of stopped invoices before sender is notified.

neverAutoAcceptNonRejectableInvoices

Boolean

Never auto accept invoices when sender cannot be notified.

preventDuplicateInvoiceNo

Boolean

The prevent duplicate invoice number within the same year setting value.

transferInformationSettings

Object

Optional transfer information settings object which properties may alter the invoice data produced by the sender’s business system via the configured substitution rules.

transferInformationSettings.supplierPaymentMeansUpdateTypes

Object

Object that describes the configured supplier payment means substitution rules.

transferInformationSettings.supplierPaymentMeansUpdateTypes.BANK

String

Substitution rule for the BANK type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.CARD

String

Substitution rule for the CARD type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.CASH

String

Substitution rule for the CASH type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DirectDebit

String

Substitution rule for the DirectDebit type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DK_FIK

String

Substitution rule for the DK_FIK type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DK_Giro

String

Substitution rule for the DK_Giro type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.IBAN

String

Substitution rule for the IBAN type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.PaymentMandate

String

Substitution rule for the PaymentMandate type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.SE_BankGiro

String

Substitution rule for the SE_BankGiro type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.SE_PlusGiro

String

Substitution rule for the SE_PlusGiro type, either always or if_empty or missing.

fromReplyToAddressSuppliers

String

E-mail address to be used as From address when sending invoices via e-mail to suppliers.

partyIdentifiers

Object

An object that contains a collection of party identifiers.

partyIdentifiers.count

Number

Number of party identifiers in the collection.

partyIdentifiers.items

Array

Array of party identifiers.

partyIdentifiers.items[].id

Number

Party identifier unique ID.

partyIdentifiers.items[].primary

Boolean

Attribute that shows if the party identifier is a primary one for the country

partyIdentifiers.items[].type

String

Party identifier type.

partyIdentifiers.items[].detailedType

String

Party identifier detailed type.

partyIdentifiers.items[].identifier

String

Party identifier value.

addresses

Object

Object that contains a collection of addresses

addresses.count

Number

Number of addresses in the collection.

addresses.items

Array

Array of addresses

addresses.items[].partyIdentifier

Object

Address party identifier object.

addresses.items[].partyIdentifier.id

Number

Address party identifier unique ID.

addresses.items[].partyIdentifier.type

String

Address party identifier type.

addresses.items[].partyIdentifier.detailedType

String

Address party identifier detailed type.

addresses.items[].partyIdentifier.countryId

String

Address party identifier country ID.

addresses.items[].partyIdentifier.identifier

String

Address party identifier value.

addresses.items[].name

String

Address name.

addresses.items[].countryId

String

Address country ID.

addresses.items[].city

String

City.

addresses.items[].streetAddress

String

Street address.

addresses.items[].coAddress

String

Co-address.

addresses.items[].zipCode

String

Zip code.

addresses.items[].legalAddress

Boolean

Attribute that shows if the address is a legal address.

addresses.items[].addressLine

String

Address line.

addresses.items[].countrySubentity

String

Country subentity.

addresses.items[].recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

addresses.items[].deliveryAddress

Boolean

Attribute that shows if the address is a delivery address.

addresses.items[].partysReference

String

Party’s reference

users

Object

Object that contains a collection of member users.

users.count

Number

Number of users in the collection.

users.items

Array

Array of member users.

users.items[].id

Number

Member user unique ID.

users.items[].name

String

User name.

users.items[].email

String

User email.

users.items[].fax

String

User fax number.

users.items[].phone

String

User phone number.

users.items[].mobilePhone

String

User mobile phone number.

paymentMeans

Object

Optional object that contains a collection of payment means.

paymentMeans.count

Number

Number of payment means in the collection.

paymentMeans.items

Array

Array of member payment means objects.

paymentMeans.items[].id

Number

Payment means unique ID.

paymentMeans.items[].type

String

Name of the payment means type.

paymentMeans.items[].subtype

String

Payment means subtype value.

paymentMeans.items[].account

String

Payment means account value.

paymentMeans.items[].swiftCode

String

SWIFT code.

paymentMeans.items[].branchCode

String

Identification of branch or office within institution, such as clearing no.

paymentMeans.items[].bankName

String

Name of the payment service institution, such as the name of the bank

paymentMeans.items[].cardNetworkId

String

Card network identification, such as Mastercard.

paymentMeans.items[].cardHolderName

String

Card holder name.

paymentMeans.items[].paymentMandate

String

Payment mandate.

paymentMeans.items[].payerFinancialAccount

String

Payer financial account value.

clearanceWorkflowEnabled

Boolean

The setting that enables or disables Clearance workflow subscription.

serviceProviderClearanceEnabled

Boolean

The setting that shows if Clearance service is enabled.

serviceProviderRetrievalEnabled

Boolean

The setting that shows if Retrieval service is enabled.

serviceProviderTestClearanceEnabled

Boolean

The setting that shows if Clearance service is enabled in the test environment.

serviceProviderTestRetrievalEnabled

Boolean

The setting that shows if Retrieval service is enabled in the test environment.

serviceProviderFullBuyerModeEnabled

Boolean

The setting that shows if full buyer mode service is enabled.

receiveFromPeppol

Boolean

Option to receive messages from Peppol.

externalRegistriesConsent

Boolean

Acceptance of exposure member data in external registries including Peppol.

notificationsEnabled

Boolean

The setting that enables or disables the invoice notifications feed for the member. Off by default; enabling it starts the feed from that moment and does not backfill.

invoices

Object

Object with information about the invoice subresource.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2334

{
  "id" : 43,
  "legalName" : "Test Member43",
  "status" : "Active",
  "product" : "AP Essentials",
  "apiEnabled" : true,
  "sendingEnabled" : true,
  "selfBillingEnabled" : false,
  "selfBillingSendEnabled" : false,
  "selfBillingReceiveEnabled" : false,
  "fromReplyToAddressSuppliers" : "member43@email.com",
  "autoremindInvites" : true,
  "noDaysToKeepNonRejectableInvoices" : 2,
  "noDaysToKeepRejectedInvoices" : 3,
  "neverAutoAcceptNonRejectableInvoices" : false,
  "preventDuplicateInvoiceNo" : true,
  "partyIdentifiers" : {
    "count" : 2,
    "items" : [ {
      "id" : 44,
      "primary" : false,
      "type" : "GLN",
      "detailedType" : "GLN",
      "identifier" : "4426633401452"
    }, {
      "id" : 43,
      "primary" : true,
      "type" : "SE:ORGNR",
      "detailedType" : "SE:ORGNR",
      "countryId" : "SE",
      "identifier" : "4337911970"
    } ]
  },
  "addresses" : {
    "count" : 1,
    "items" : [ {
      "id" : 43,
      "partyIdentifier" : {
        "id" : 44,
        "primary" : false,
        "type" : "GLN",
        "detailedType" : "GLN",
        "identifier" : "4426633401452"
      },
      "name" : "Test Member43",
      "countryId" : "SE",
      "city" : "City 43",
      "streetAddress" : "Street 43",
      "coAddress" : "coAddress 43",
      "zipCode" : "53243",
      "legalAddress" : true,
      "addressLine" : "Address line 43",
      "countrySubentity" : "Country subentity 43",
      "recipientAddress" : false,
      "deliveryAddress" : false,
      "partysReference" : "Party reference 43",
      "warnings" : [ ]
    } ]
  },
  "users" : {
    "count" : 1,
    "items" : [ {
      "id" : 43,
      "name" : "Test User43",
      "email" : "test.email43@kofax.com",
      "phone" : "+46 322 12 34 56",
      "mobilePhone" : "+46 322 56 43 21",
      "fax" : "+46 322 12 34 56"
    } ]
  },
  "invoices" : { },
  "clearanceWorkflowEnabled" : false,
  "notificationsEnabled" : false,
  "serviceProviderClearanceEnabled" : false,
  "serviceProviderRetrievalEnabled" : false,
  "serviceProviderTestClearanceEnabled" : false,
  "serviceProviderTestRetrievalEnabled" : false,
  "serviceProviderFullBuyerModeEnabled" : true,
  "receiveFromPeppol" : false,
  "externalRegistriesConsent" : false
}

Create a new member

Creates a new member.

To create a new member, provide the service with a unique party identifier, i.e. an organization number, that follows the requirements of the country the party belongs to, a unique legal address in the country of the party origin, and a unique user. Additionally provide a payment means in case a new member will send invoices and provide a recipient address to make a new member be able to receive invoices.

The new member must be usable in at least one business role, so the request must meet at least one of the following sets of requirements:

  • Recipient - at least one address in addresses has recipientAddress set to true. The member is created with receiving active, and a recipient is registered for each such address.

  • Sender - sendingEnabled is set to true and paymentMeans contains at least one payment means. The member is created with sending active and is registered as a sending party, so invoices can be submitted on its behalf without any follow-up request. See Invoice Sending for the complete set of requirements for invoice submission. Only a product that is allowed to enable sending can set the restricted sendingEnabled property.

When no address is marked as a recipient address, the member is created with receiving disabled and no recipient is registered for it.

A request that does not meet the requirements of at least one role is rejected with 422 Unprocessable Entity. Each entry of the details array names one property to change: the missing recipient address, and either the missing sending intention or the payment means that sending requires, depending on whether sendingEnabled was set to true.

"details": [
 {
  "error": "Property $['sendingEnabled'] is not set to true"
 },
 {
  "error": "None of the $['addresses'][*]['recipientAddress'] properties is set to true"
 }
]
POST /api/members HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1270

{
  "partyIdentifiers" : {
    "items" : [ {
      "identifier" : "190528-5209",
      "detailedType" : "SE:ORGNR",
      "type" : "SE:ORGNR",
      "countryId" : "SE"
    } ]
  },
  "autoremindInvites" : true,
  "neverAutoAcceptNonRejectableInvoices" : false,
  "addresses" : {
    "items" : [ {
      "zipCode" : "99988",
      "coAddress" : "coAddress 88",
      "countrySubentity" : "Country subentity 88",
      "city" : "City 88",
      "streetAddress" : "Street 88",
      "name" : "Test Member88",
      "addressLine" : "Address line 88",
      "recipientAddress" : true,
      "partysReference" : "Party reference 88",
      "partyIdentifier" : {
        "identifier" : "7810610800715",
        "detailedType" : "GLN",
        "type" : "GLN"
      },
      "countryId" : "SE",
      "legalAddress" : true
    } ]
  },
  "noDaysToKeepRejectedInvoices" : 3,
  "noDaysToKeepNonRejectableInvoices" : 5,
  "fromReplyToAddressSuppliers" : "member88@email.com",
  "preventDuplicateInvoiceNo" : true,
  "users" : {
    "items" : [ {
      "mobilePhone" : "+46 322 56 43 21",
      "phone" : "+46 322 12 34 56",
      "name" : "Test User",
      "fax" : "+46 322 12 34 56",
      "email" : "test.email@kofax.com"
    } ]
  }
}

Path parameters

No parameters.

Query parameters

No parameters.

Request fields

Path Type Description

autoremindInvites

Boolean

Auto reminder setting value

noDaysToKeepNonRejectableInvoices

Number

Number of days until auto accepting invoices with errors for which sender cannot be notified. 0 to auto accept without delay.

noDaysToKeepRejectedInvoices

Number

Number of days until auto rejecting invoices with errors for which sender can be notified. 0 to disable management of stopped invoices before sender is notified.

neverAutoAcceptNonRejectableInvoices

Boolean

Never auto accept invoices when sender cannot be notified.

preventDuplicateInvoiceNo

Boolean

The value for the setting to prevent duplicate invoice number within the same year.

fromReplyToAddressSuppliers

String

E-mail address to be used as From address when sending invoices via e-mail to suppliers.

transferInformationSettings

Object

Object containing optional information for the invoice sending setup to configure the rules for substituting specific invoice data parts.

partyIdentifiers

Object

Object containing a collection of party identifiers.

addresses

Object

Object containing a collection of addresses.

users

Object

Object containing a collection of users. The 'email' property of the users must be unique across the collection and must not be used by any already existing user.

paymentMeans

Object

Object containing an optional collection of payment means for the invoice sending setup.

Response fields

Path Type Description

id

Number

Member unique ID.

legalName

String

Member name.

status

String

Member status. The field is mainly either Active or Unregistered, but it also can be set by the service to PendingApproval, Pending, Blocked.

product

String

A product the member belongs to.

apiEnabled

Boolean

The setting that enables or disables access to the member via the API.

sendingEnabled

Boolean

The setting that enables or disables ability of the member to submit invoices via the API.

selfBillingEnabled

Boolean

Deprecated: use selfBillingSendEnabled. Always mirrors the self-billing send setting. The setting that enables self-billing submissions for a buyer. For correct configuration sending must be active and additional configuration might be needed if Peppol exchange has been setup.

selfBillingSendEnabled

Boolean

The setting that enables self-billing submissions in the role of a buyer. Sending must be active. Replaces the deprecated selfBillingEnabled field, which it always equals.

selfBillingReceiveEnabled

Boolean

The setting that enables receiving self-billing documents in the role of a supplier. Receiving must be active.

autoremindInvites

Boolean

The auto reminder setting value

noDaysToKeepNonRejectableInvoices

Number

Number of days until auto accepting invoices with errors for which sender cannot be notified. 0 to auto accept without delay.

noDaysToKeepRejectedInvoices

Number

Number of days until auto rejecting invoices with errors for which sender can be notified. 0 to disable management of stopped invoices before sender is notified.

neverAutoAcceptNonRejectableInvoices

Boolean

Never auto accept invoices when sender cannot be notified.

preventDuplicateInvoiceNo

Boolean

The prevent duplicate invoice number within the same year setting value.

transferInformationSettings

Object

Optional transfer information settings object which properties may alter the invoice data produced by the sender’s business system via the configured substitution rules.

transferInformationSettings.supplierPaymentMeansUpdateTypes

Object

Object that describes the configured supplier payment means substitution rules.

transferInformationSettings.supplierPaymentMeansUpdateTypes.BANK

String

Substitution rule for the BANK type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.CARD

String

Substitution rule for the CARD type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.CASH

String

Substitution rule for the CASH type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DirectDebit

String

Substitution rule for the DirectDebit type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DK_FIK

String

Substitution rule for the DK_FIK type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DK_Giro

String

Substitution rule for the DK_Giro type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.IBAN

String

Substitution rule for the IBAN type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.PaymentMandate

String

Substitution rule for the PaymentMandate type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.SE_BankGiro

String

Substitution rule for the SE_BankGiro type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.SE_PlusGiro

String

Substitution rule for the SE_PlusGiro type, either always or if_empty or missing.

fromReplyToAddressSuppliers

String

E-mail address to be used as From address when sending invoices via e-mail to suppliers.

partyIdentifiers

Object

An object that contains a collection of party identifiers.

partyIdentifiers.count

Number

Number of party identifiers in the collection.

partyIdentifiers.items

Array

Array of party identifiers.

partyIdentifiers.items[].id

Number

Party identifier unique ID.

partyIdentifiers.items[].primary

Boolean

Attribute that shows if the party identifier is a primary one for the country

partyIdentifiers.items[].type

String

Party identifier type.

partyIdentifiers.items[].detailedType

String

Party identifier detailed type.

partyIdentifiers.items[].identifier

String

Party identifier value.

addresses

Object

Object that contains a collection of addresses

addresses.count

Number

Number of addresses in the collection.

addresses.items

Array

Array of addresses

addresses.items[].partyIdentifier

Object

Address party identifier object.

addresses.items[].partyIdentifier.id

Number

Address party identifier unique ID.

addresses.items[].partyIdentifier.type

String

Address party identifier type.

addresses.items[].partyIdentifier.detailedType

String

Address party identifier detailed type.

addresses.items[].partyIdentifier.countryId

String

Address party identifier country ID.

addresses.items[].partyIdentifier.identifier

String

Address party identifier value.

addresses.items[].name

String

Address name.

addresses.items[].countryId

String

Address country ID.

addresses.items[].city

String

City.

addresses.items[].streetAddress

String

Street address.

addresses.items[].coAddress

String

Co-address.

addresses.items[].zipCode

String

Zip code.

addresses.items[].legalAddress

Boolean

Attribute that shows if the address is a legal address.

addresses.items[].addressLine

String

Address line.

addresses.items[].countrySubentity

String

Country subentity.

addresses.items[].recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

addresses.items[].deliveryAddress

Boolean

Attribute that shows if the address is a delivery address.

addresses.items[].partysReference

String

Party’s reference

users

Object

Object that contains a collection of member users.

users.count

Number

Number of users in the collection.

users.items

Array

Array of member users.

users.items[].id

Number

Member user unique ID.

users.items[].name

String

User name.

users.items[].email

String

User email.

users.items[].fax

String

User fax number.

users.items[].phone

String

User phone number.

users.items[].mobilePhone

String

User mobile phone number.

paymentMeans

Object

Optional object that contains a collection of payment means.

paymentMeans.count

Number

Number of payment means in the collection.

paymentMeans.items

Array

Array of member payment means objects.

paymentMeans.items[].id

Number

Payment means unique ID.

paymentMeans.items[].type

String

Name of the payment means type.

paymentMeans.items[].subtype

String

Payment means subtype value.

paymentMeans.items[].account

String

Payment means account value.

paymentMeans.items[].swiftCode

String

SWIFT code.

paymentMeans.items[].branchCode

String

Identification of branch or office within institution, such as clearing no.

paymentMeans.items[].bankName

String

Name of the payment service institution, such as the name of the bank

paymentMeans.items[].cardNetworkId

String

Card network identification, such as Mastercard.

paymentMeans.items[].cardHolderName

String

Card holder name.

paymentMeans.items[].paymentMandate

String

Payment mandate.

paymentMeans.items[].payerFinancialAccount

String

Payer financial account value.

clearanceWorkflowEnabled

Boolean

The setting that enables or disables Clearance workflow subscription.

serviceProviderClearanceEnabled

Boolean

The setting that shows if Clearance service is enabled.

serviceProviderRetrievalEnabled

Boolean

The setting that shows if Retrieval service is enabled.

serviceProviderTestClearanceEnabled

Boolean

The setting that shows if Clearance service is enabled in the test environment.

serviceProviderTestRetrievalEnabled

Boolean

The setting that shows if Retrieval service is enabled in the test environment.

serviceProviderFullBuyerModeEnabled

Boolean

The setting that shows if full buyer mode service is enabled.

receiveFromPeppol

Boolean

Option to receive messages from Peppol.

externalRegistriesConsent

Boolean

Acceptance of exposure member data in external registries including Peppol.

notificationsEnabled

Boolean

The setting that enables or disables the invoice notifications feed for the member. Off by default; enabling it starts the feed from that moment and does not backfill.

invoices

Object

Object with information about the invoice subresource.

Example request

$ curl 'https://web.invoiceportal.net/api/members' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "partyIdentifiers" : {
    "items" : [ {
      "identifier" : "190528-5209",
      "detailedType" : "SE:ORGNR",
      "type" : "SE:ORGNR",
      "countryId" : "SE"
    } ]
  },
  "autoremindInvites" : true,
  "neverAutoAcceptNonRejectableInvoices" : false,
  "addresses" : {
    "items" : [ {
      "zipCode" : "99988",
      "coAddress" : "coAddress 88",
      "countrySubentity" : "Country subentity 88",
      "city" : "City 88",
      "streetAddress" : "Street 88",
      "name" : "Test Member88",
      "addressLine" : "Address line 88",
      "recipientAddress" : true,
      "partysReference" : "Party reference 88",
      "partyIdentifier" : {
        "identifier" : "7810610800715",
        "detailedType" : "GLN",
        "type" : "GLN"
      },
      "countryId" : "SE",
      "legalAddress" : true
    } ]
  },
  "noDaysToKeepRejectedInvoices" : 3,
  "noDaysToKeepNonRejectableInvoices" : 5,
  "fromReplyToAddressSuppliers" : "member88@email.com",
  "preventDuplicateInvoiceNo" : true,
  "users" : {
    "items" : [ {
      "mobilePhone" : "+46 322 56 43 21",
      "phone" : "+46 322 12 34 56",
      "name" : "Test User",
      "fax" : "+46 322 12 34 56",
      "email" : "test.email@kofax.com"
    } ]
  }
}'

Example response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 2331

{
  "id" : 88,
  "legalName" : "Test Member88",
  "status" : "Active",
  "product" : "AP Essentials",
  "apiEnabled" : true,
  "sendingEnabled" : false,
  "selfBillingEnabled" : false,
  "selfBillingSendEnabled" : false,
  "selfBillingReceiveEnabled" : false,
  "fromReplyToAddressSuppliers" : "member88@email.com",
  "autoremindInvites" : true,
  "noDaysToKeepNonRejectableInvoices" : 5,
  "noDaysToKeepRejectedInvoices" : 3,
  "neverAutoAcceptNonRejectableInvoices" : false,
  "preventDuplicateInvoiceNo" : true,
  "partyIdentifiers" : {
    "count" : 2,
    "items" : [ {
      "id" : 15,
      "primary" : false,
      "type" : "GLN",
      "detailedType" : "GLN",
      "identifier" : "7810610800715"
    }, {
      "id" : 74,
      "primary" : true,
      "type" : "SE:ORGNR",
      "detailedType" : "SE:ORGNR",
      "countryId" : "SE",
      "identifier" : "1905285209"
    } ]
  },
  "addresses" : {
    "count" : 1,
    "items" : [ {
      "id" : 17,
      "partyIdentifier" : {
        "id" : 15,
        "primary" : false,
        "type" : "GLN",
        "detailedType" : "GLN",
        "identifier" : "7810610800715"
      },
      "name" : "Test Member88",
      "countryId" : "SE",
      "city" : "City 88",
      "streetAddress" : "Street 88",
      "coAddress" : "coAddress 88",
      "zipCode" : "99988",
      "legalAddress" : true,
      "addressLine" : "Address line 88",
      "countrySubentity" : "Country subentity 88",
      "recipientAddress" : true,
      "deliveryAddress" : false,
      "partysReference" : "Party reference 88",
      "warnings" : [ ]
    } ]
  },
  "users" : {
    "count" : 1,
    "items" : [ {
      "id" : 26,
      "name" : "Test User",
      "email" : "test.email@kofax.com",
      "phone" : "+46 322 12 34 56",
      "mobilePhone" : "+46 322 56 43 21",
      "fax" : "+46 322 12 34 56"
    } ]
  },
  "invoices" : { },
  "clearanceWorkflowEnabled" : false,
  "notificationsEnabled" : false,
  "serviceProviderClearanceEnabled" : false,
  "serviceProviderRetrievalEnabled" : false,
  "serviceProviderTestClearanceEnabled" : false,
  "serviceProviderTestRetrievalEnabled" : false,
  "serviceProviderFullBuyerModeEnabled" : false,
  "receiveFromPeppol" : false,
  "externalRegistriesConsent" : false
}

Update a member

Manages the settings and status of an existing member.

To change a member setting, send a JSON document that contains a new value for the specific setting referred by a property name that corresponds to it.

In the same way a member can be activated or deactivated by sending a JSON document containing the status property with the values set to Active or Unregistered respectively.

Each time when the payment means are being updated by the request specify ALL payment means to be configured for the member.

PATCH /api/members/43 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 208

{
  "noDaysToKeepRejectedInvoices" : 70,
  "noDaysToKeepNonRejectableInvoices" : 71,
  "transferInformationSettings" : {
    "supplierPaymentMeansUpdateTypes" : {
      "IBAN" : "if_empty"
    }
  }
}

Path parameters

Table 2. /members/{memberId}
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Member unique ID.

legalName

String

Member name.

status

String

Member status. The field is mainly either Active or Unregistered, but it also can be set by the service to PendingApproval, Pending, Blocked.

product

String

A product the member belongs to.

apiEnabled

Boolean

The setting that enables or disables access to the member via the API.

sendingEnabled

Boolean

The setting that enables or disables ability of the member to submit invoices via the API.

selfBillingEnabled

Boolean

Deprecated: use selfBillingSendEnabled. Always mirrors the self-billing send setting. The setting that enables self-billing submissions for a buyer. For correct configuration sending must be active and additional configuration might be needed if Peppol exchange has been setup.

selfBillingSendEnabled

Boolean

The setting that enables self-billing submissions in the role of a buyer. Sending must be active. Replaces the deprecated selfBillingEnabled field, which it always equals.

selfBillingReceiveEnabled

Boolean

The setting that enables receiving self-billing documents in the role of a supplier. Receiving must be active.

autoremindInvites

Boolean

The auto reminder setting value

noDaysToKeepNonRejectableInvoices

Number

Number of days until auto accepting invoices with errors for which sender cannot be notified. 0 to auto accept without delay.

noDaysToKeepRejectedInvoices

Number

Number of days until auto rejecting invoices with errors for which sender can be notified. 0 to disable management of stopped invoices before sender is notified.

neverAutoAcceptNonRejectableInvoices

Boolean

Never auto accept invoices when sender cannot be notified.

preventDuplicateInvoiceNo

Boolean

The prevent duplicate invoice number within the same year setting value.

transferInformationSettings

Object

Optional transfer information settings object which properties may alter the invoice data produced by the sender’s business system via the configured substitution rules.

transferInformationSettings.supplierPaymentMeansUpdateTypes

Object

Object that describes the configured supplier payment means substitution rules.

transferInformationSettings.supplierPaymentMeansUpdateTypes.BANK

String

Substitution rule for the BANK type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.CARD

String

Substitution rule for the CARD type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.CASH

String

Substitution rule for the CASH type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DirectDebit

String

Substitution rule for the DirectDebit type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DK_FIK

String

Substitution rule for the DK_FIK type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.DK_Giro

String

Substitution rule for the DK_Giro type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.IBAN

String

Substitution rule for the IBAN type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.PaymentMandate

String

Substitution rule for the PaymentMandate type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.SE_BankGiro

String

Substitution rule for the SE_BankGiro type, either always or if_empty or missing.

transferInformationSettings.supplierPaymentMeansUpdateTypes.SE_PlusGiro

String

Substitution rule for the SE_PlusGiro type, either always or if_empty or missing.

fromReplyToAddressSuppliers

String

E-mail address to be used as From address when sending invoices via e-mail to suppliers.

partyIdentifiers

Object

An object that contains a collection of party identifiers.

partyIdentifiers.count

Number

Number of party identifiers in the collection.

partyIdentifiers.items

Array

Array of party identifiers.

partyIdentifiers.items[].id

Number

Party identifier unique ID.

partyIdentifiers.items[].primary

Boolean

Attribute that shows if the party identifier is a primary one for the country

partyIdentifiers.items[].type

String

Party identifier type.

partyIdentifiers.items[].detailedType

String

Party identifier detailed type.

partyIdentifiers.items[].identifier

String

Party identifier value.

addresses

Object

Object that contains a collection of addresses

addresses.count

Number

Number of addresses in the collection.

addresses.items

Array

Array of addresses

addresses.items[].partyIdentifier

Object

Address party identifier object.

addresses.items[].partyIdentifier.id

Number

Address party identifier unique ID.

addresses.items[].partyIdentifier.type

String

Address party identifier type.

addresses.items[].partyIdentifier.detailedType

String

Address party identifier detailed type.

addresses.items[].partyIdentifier.countryId

String

Address party identifier country ID.

addresses.items[].partyIdentifier.identifier

String

Address party identifier value.

addresses.items[].name

String

Address name.

addresses.items[].countryId

String

Address country ID.

addresses.items[].city

String

City.

addresses.items[].streetAddress

String

Street address.

addresses.items[].coAddress

String

Co-address.

addresses.items[].zipCode

String

Zip code.

addresses.items[].legalAddress

Boolean

Attribute that shows if the address is a legal address.

addresses.items[].addressLine

String

Address line.

addresses.items[].countrySubentity

String

Country subentity.

addresses.items[].recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

addresses.items[].deliveryAddress

Boolean

Attribute that shows if the address is a delivery address.

addresses.items[].partysReference

String

Party’s reference

users

Object

Object that contains a collection of member users.

users.count

Number

Number of users in the collection.

users.items

Array

Array of member users.

users.items[].id

Number

Member user unique ID.

users.items[].name

String

User name.

users.items[].email

String

User email.

users.items[].fax

String

User fax number.

users.items[].phone

String

User phone number.

users.items[].mobilePhone

String

User mobile phone number.

paymentMeans

Object

Optional object that contains a collection of payment means.

paymentMeans.count

Number

Number of payment means in the collection.

paymentMeans.items

Array

Array of member payment means objects.

paymentMeans.items[].id

Number

Payment means unique ID.

paymentMeans.items[].type

String

Name of the payment means type.

paymentMeans.items[].subtype

String

Payment means subtype value.

paymentMeans.items[].account

String

Payment means account value.

paymentMeans.items[].swiftCode

String

SWIFT code.

paymentMeans.items[].branchCode

String

Identification of branch or office within institution, such as clearing no.

paymentMeans.items[].bankName

String

Name of the payment service institution, such as the name of the bank

paymentMeans.items[].cardNetworkId

String

Card network identification, such as Mastercard.

paymentMeans.items[].cardHolderName

String

Card holder name.

paymentMeans.items[].paymentMandate

String

Payment mandate.

paymentMeans.items[].payerFinancialAccount

String

Payer financial account value.

clearanceWorkflowEnabled

Boolean

The setting that enables or disables Clearance workflow subscription.

serviceProviderClearanceEnabled

Boolean

The setting that shows if Clearance service is enabled.

serviceProviderRetrievalEnabled

Boolean

The setting that shows if Retrieval service is enabled.

serviceProviderTestClearanceEnabled

Boolean

The setting that shows if Clearance service is enabled in the test environment.

serviceProviderTestRetrievalEnabled

Boolean

The setting that shows if Retrieval service is enabled in the test environment.

serviceProviderFullBuyerModeEnabled

Boolean

The setting that shows if full buyer mode service is enabled.

receiveFromPeppol

Boolean

Option to receive messages from Peppol.

externalRegistriesConsent

Boolean

Acceptance of exposure member data in external registries including Peppol.

notificationsEnabled

Boolean

The setting that enables or disables the invoice notifications feed for the member. Off by default; enabling it starts the feed from that moment and does not backfill.

invoices

Object

Object with information about the invoice subresource.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43' -i -X PATCH \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "noDaysToKeepRejectedInvoices" : 70,
  "noDaysToKeepNonRejectableInvoices" : 71,
  "transferInformationSettings" : {
    "supplierPaymentMeansUpdateTypes" : {
      "IBAN" : "if_empty"
    }
  }
}'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2613

{
  "id" : 43,
  "legalName" : "Test Member43",
  "status" : "Active",
  "product" : "AP Essentials",
  "apiEnabled" : true,
  "sendingEnabled" : true,
  "selfBillingEnabled" : false,
  "selfBillingSendEnabled" : false,
  "selfBillingReceiveEnabled" : false,
  "fromReplyToAddressSuppliers" : "member43@email.com",
  "autoremindInvites" : true,
  "noDaysToKeepNonRejectableInvoices" : 71,
  "noDaysToKeepRejectedInvoices" : 70,
  "neverAutoAcceptNonRejectableInvoices" : false,
  "preventDuplicateInvoiceNo" : true,
  "transferInformationSettings" : {
    "supplierPaymentMeansUpdateTypes" : {
      "IBAN" : "if_empty"
    }
  },
  "partyIdentifiers" : {
    "count" : 2,
    "items" : [ {
      "id" : 44,
      "primary" : false,
      "type" : "GLN",
      "detailedType" : "GLN",
      "identifier" : "4426339366826"
    }, {
      "id" : 43,
      "primary" : true,
      "type" : "SE:ORGNR",
      "detailedType" : "SE:ORGNR",
      "countryId" : "SE",
      "identifier" : "4371701790"
    } ]
  },
  "addresses" : {
    "count" : 1,
    "items" : [ {
      "id" : 43,
      "partyIdentifier" : {
        "id" : 44,
        "primary" : false,
        "type" : "GLN",
        "detailedType" : "GLN",
        "identifier" : "4426339366826"
      },
      "name" : "Test Member43",
      "countryId" : "SE",
      "city" : "City 43",
      "streetAddress" : "Street 43",
      "coAddress" : "coAddress 43",
      "zipCode" : "00343",
      "legalAddress" : true,
      "addressLine" : "Address line 43",
      "countrySubentity" : "Country subentity 43",
      "recipientAddress" : false,
      "deliveryAddress" : false,
      "partysReference" : "Party reference 43",
      "warnings" : [ ]
    } ]
  },
  "users" : {
    "count" : 1,
    "items" : [ {
      "id" : 43,
      "name" : "Test User43",
      "email" : "test.email43@kofax.com",
      "phone" : "+46 322 12 34 56",
      "mobilePhone" : "+46 322 56 43 21",
      "fax" : "+46 322 12 34 56"
    } ]
  },
  "paymentMeans" : {
    "count" : 1,
    "items" : [ {
      "id" : 707,
      "type" : "IBAN",
      "account" : "00000058398257466"
    } ]
  },
  "invoices" : { },
  "clearanceWorkflowEnabled" : false,
  "notificationsEnabled" : false,
  "serviceProviderClearanceEnabled" : false,
  "serviceProviderRetrievalEnabled" : false,
  "serviceProviderTestClearanceEnabled" : false,
  "serviceProviderTestRetrievalEnabled" : false,
  "serviceProviderFullBuyerModeEnabled" : false,
  "receiveFromPeppol" : false,
  "externalRegistriesConsent" : false
}

Member address endpoint

This endpoint is a collection resource that manages member addresses.

Get member addresses

Returns a list of member addresses.

GET /api/members/43/addresses HTTP/1.1

Path parameters

Table 3. /members/{memberId}/addresses
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Type Description

sort

String

Optional sorting parameter. The properties that can be specified for sorting are:

1. id - address ID

2. name - address name

Request fields

No request body.

Response fields

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of address objects.

items[].id

Number

Address unique ID.

items[].name

String

Address name.

items[].legalAddress

Boolean

Attribute that shows if the address is a legal address.

items[].recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

items[].deliveryAddress

Boolean

Attribute that shows if the address is a delivery address.

items[].warnings

Array

Non-blocking warnings about the address change (e.g. France re-verification).

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/addresses' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 377

{
  "count" : 2,
  "items" : [ {
    "id" : 24,
    "name" : "Test Member24",
    "legalAddress" : false,
    "recipientAddress" : false,
    "deliveryAddress" : false,
    "warnings" : [ ]
  }, {
    "id" : 43,
    "name" : "Test Member43",
    "legalAddress" : true,
    "recipientAddress" : false,
    "deliveryAddress" : false,
    "warnings" : [ ]
  } ]
}

Add member address

Creates a new address and associates it with a member.

POST /api/members/43/addresses HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 507

{
  "zipCode" : "55524",
  "coAddress" : "coAddress 24",
  "city" : "City 24",
  "addressLine" : "Address line 24",
  "countryId" : "SE",
  "legalAddress" : false,
  "countrySubentity" : "Country subentity 24",
  "streetAddress" : "Street 24",
  "deliveryAddress" : false,
  "name" : "Test Address 24",
  "recipientAddress" : false,
  "partysReference" : "Party reference 24",
  "partyIdentifier" : {
    "identifier" : "7858637348797",
    "detailedType" : "GLN",
    "type" : "GLN"
  }
}

Path parameters

Table 4. /members/{memberId}/addresses
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

Path Type Description

name

String

Address name.

countryId

String

Country ID.

city

String

City.

streetAddress

String

Street address.

zipCode

String

Address zip code.

coAddress

String

Co-address.

addressLine

String

Address line

countrySubentity

String

Country subentity.

partysReference

String

Party’s reference.

legalAddress

Boolean

Attribute that shows if the address is a legal address.

recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

deliveryAddress

Boolean

Attribute that shows if the address it a delivery address.

partyIdentifier

Object

Address party identifier object.

Response fields

Path Type Description

id

Number

Address unique ID.

name

String

Address name.

countryId

String

Country ID.

city

String

City.

streetAddress

String

Street address.

zipCode

String

Address zip code.

coAddress

String

Co-address.

addressLine

String

Address line.

countrySubentity

String

Country subentity.

partysReference

String

Party’s reference.

legalAddress

Boolean

Attribute that shows if the address is a legal address.

recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

deliveryAddress

Boolean

Attribute that shows if the address is a delivery address.

warnings

Array

Non-blocking warnings about the address change (e.g. France re-verification).

partyIdentifier

Object

Address party identifier object.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/addresses' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "zipCode" : "55524",
  "coAddress" : "coAddress 24",
  "city" : "City 24",
  "addressLine" : "Address line 24",
  "countryId" : "SE",
  "legalAddress" : false,
  "countrySubentity" : "Country subentity 24",
  "streetAddress" : "Street 24",
  "deliveryAddress" : false,
  "name" : "Test Address 24",
  "recipientAddress" : false,
  "partysReference" : "Party reference 24",
  "partyIdentifier" : {
    "identifier" : "7858637348797",
    "detailedType" : "GLN",
    "type" : "GLN"
  }
}'

Example response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 566

{
  "id" : 24,
  "partyIdentifier" : {
    "primary" : false,
    "type" : "GLN",
    "detailedType" : "GLN",
    "identifier" : "7858637348797"
  },
  "name" : "Test Address 24",
  "countryId" : "SE",
  "city" : "City 24",
  "streetAddress" : "Street 24",
  "coAddress" : "coAddress 24",
  "zipCode" : "55524",
  "legalAddress" : false,
  "addressLine" : "Address line 24",
  "countrySubentity" : "Country subentity 24",
  "recipientAddress" : false,
  "deliveryAddress" : false,
  "partysReference" : "Party reference 24",
  "warnings" : [ ]
}

Get member address details

Returns detailed information about a member address.

GET /api/members/43/addresses/43 HTTP/1.1

Path parameters

Table 5. /members/{memberId}/addresses/{addressId}
Parameter Description

memberId

Unique member ID.

addressId

Address unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Address unique ID.

name

String

Address name.

countryId

String

Country ID.

city

String

City.

streetAddress

String

Street address.

zipCode

String

Address zip code.

coAddress

String

Co-address.

addressLine

String

Address line.

countrySubentity

String

Country subentity.

partysReference

String

Party’s reference.

legalAddress

Boolean

Attribute that shows if the address is a legal address.

recipientAddress

Boolean

Attribute that shows if the address is a recipient address.

deliveryAddress

Boolean

Attribute that shows if the address is a delivery address.

warnings

Array

Non-blocking warnings about the address change (e.g. France re-verification).

partyIdentifier

Object

Address party identifier object.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/addresses/43' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 579

{
  "id" : 43,
  "partyIdentifier" : {
    "id" : 44,
    "primary" : false,
    "type" : "GLN",
    "detailedType" : "GLN",
    "identifier" : "4429627091592"
  },
  "name" : "Test Member43",
  "countryId" : "SE",
  "city" : "City 43",
  "streetAddress" : "Street 43",
  "coAddress" : "coAddress 43",
  "zipCode" : "46143",
  "legalAddress" : true,
  "addressLine" : "Address line 43",
  "countrySubentity" : "Country subentity 43",
  "recipientAddress" : false,
  "deliveryAddress" : false,
  "partysReference" : "Party reference 43",
  "warnings" : [ ]
}

Address change warnings

Address create, update, and read responses include a warnings array of non-blocking, informational messages. It is always present and is an empty array when there are no warnings. A request is not rejected because of a warning — the change is applied and the warning describes a follow-up effect.

For a French member that is already onboarded with a clearance service provider, changing an address returns a re-verification warning, because the updated business data must be re-verified with the clearance network. Only the fields relevant to the warning are shown below; a full address response also contains the other address fields:

{
  "id": 24,
  "name": "Test Address 24",
  "countryId": "FR",
  "legalAddress": true,
  "recipientAddress": false,
  "deliveryAddress": false,
  "warnings": [
    "Since this member is onboarded with a clearance service provider, business verification data will be re-verified."
  ]
}

See Onboarding French members for the French onboarding flow.

Remove member address

Removes a member address.

For a French member that is onboarded with a clearance service provider, an address that still has a published endpoint cannot be removed. The request is rejected with 422 Unprocessable Entity, and the endpoint must be explicitly unpublished before the address can be deleted.

See Onboarding French members for the French onboarding flow.

DELETE /api/members/43/addresses/24 HTTP/1.1

Path parameters

Table 6. /members/{memberId}/addresses/{addressId}
Parameter Description

memberId

Unique member ID.

addressId

Address unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

No content.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/addresses/24' -i -X DELETE

Example response

HTTP/1.1 204 No Content

Member party identifier endpoint

This endpoint is a collection resource that manages member party identifiers.

Check out the rules for the supported party identifier types and formatting.

Get member party identifiers

Returns a list of member party identifiers.

GET /api/members/43/partyIdentifiers HTTP/1.1

Path parameters

Table 7. /members/{memberId}/partyIdentifiers
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of party identifier objects.

items[].id

Number

Party identifier unique ID.

items[].primary

Boolean

Attribute that shows if the party identifier is a primary one.

items[].type

String

Party identifier type.

items[].detailedType

String

Party identifier detailedType.

items[].identifier

String

Party identifier value.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/partyIdentifiers' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 335

{
  "count" : 2,
  "items" : [ {
    "id" : 43,
    "primary" : true,
    "type" : "SE:ORGNR",
    "detailedType" : "SE:ORGNR",
    "countryId" : "SE",
    "identifier" : "4380219982"
  }, {
    "id" : 25,
    "primary" : false,
    "type" : "GLN",
    "detailedType" : "GLN",
    "identifier" : "2541155338023"
  } ]
}

Add a new member party identifier

Creates a new party identifier for a member.

POST /api/members/43/partyIdentifiers HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 78

{
  "identifier" : "1020743243",
  "type" : "DK:P",
  "countryId" : "DK"
}

Path parameters

Table 8. /members/{memberId}/partyIdentifiers
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

Path Type Description

type

String

Party identifier type.

identifier

String

Party identifier value.

countryId

String

Party identifier country ID.

Response fields

Path Type Description

id

Number

Party identifier unique ID.

primary

Boolean

Attribute that shows if the party identifier is a primary one.

type

String

Party identifier type.

detailedType

String

Party identifier detailedType.

identifier

String

Party identifier value.

countryId

String

Party identifier country ID.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/partyIdentifiers' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "identifier" : "1020743243",
  "type" : "DK:P",
  "countryId" : "DK"
}'

Example response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 142

{
  "id" : 24,
  "primary" : false,
  "type" : "DK:P",
  "detailedType" : "DK:P",
  "countryId" : "DK",
  "identifier" : "1020743243"
}

Get member party identifier details

Returns detailed information about a member party identifier.

GET /api/members/43/partyIdentifiers/43 HTTP/1.1

Path parameters

Table 9. /members/{memberId}/partyIdentifiers/{partyIdentifierId}
Parameter Description

memberId

Unique member ID.

partyIdentifierId

Party identifier unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Party identifier unique ID.

primary

Boolean

Attribute that shows if the party identifier is a primary one.

type

String

Party identifier type.

detailedType

String

Party identifier detailedType.

identifier

String

Party identifier value.

countryId

String

Party identifier country ID.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/partyIdentifiers/43' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 149

{
  "id" : 43,
  "primary" : true,
  "type" : "SE:ORGNR",
  "detailedType" : "SE:ORGNR",
  "countryId" : "SE",
  "identifier" : "4319981785"
}

Remove member party identifier

Removes a member party identifier.

DELETE /api/members/43/partyIdentifiers/85 HTTP/1.1

Path parameters

Table 10. /members/{memberId}/partyIdentifiers/{partyIdentifierId}
Parameter Description

memberId

Unique member ID.

partyIdentifierId

Party identifier unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

No content.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/partyIdentifiers/85' -i -X DELETE

Example response

HTTP/1.1 204 No Content

Member user endpoint

This endpoint is a collection resource that manages member users.

Get member users

Returns a list of member users.

GET /api/members/43/users HTTP/1.1

Path parameters

Table 11. /members/{memberId}/users
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Type Description

sort

String

Optional sorting parameter. The properties that can be specified for sorting are:

1. id - user ID

2. name - user name

Request fields

No request body.

Response fields

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of user objects.

items[].id

Number

User unique ID.

items[].name

String

User name.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/users' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 140

{
  "count" : 2,
  "items" : [ {
    "id" : 25,
    "name" : "Test User25"
  }, {
    "id" : 29,
    "name" : "Test User29"
  } ]
}

Add member user

Creates a new member user.

POST /api/members/43/users HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 168

{
  "mobilePhone" : "+46 322 65 43 21",
  "phone" : "+46 322 12 34 56",
  "name" : "Test User",
  "fax" : "+46 322 12 34 56",
  "email" : "test.email@kofax.com"
}

Path parameters

Table 12. /members/{memberId}/users
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

Path Type Description

name

String

User name.

email

String

User email address.

fax

String

User fax number.

phone

String

User phone number.

mobilePhone

String

User mobile phone number.

Response fields

Path Type Description

id

Number

User unique ID.

name

String

User name.

email

String

User email address.

fax

String

User fax number.

phone

String

User phone number.

mobilePhone

String

User mobile phone number.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/users' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "mobilePhone" : "+46 322 65 43 21",
  "phone" : "+46 322 12 34 56",
  "name" : "Test User",
  "fax" : "+46 322 12 34 56",
  "email" : "test.email@kofax.com"
}'

Example response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 182

{
  "id" : 56,
  "name" : "Test User",
  "email" : "test.email@kofax.com",
  "phone" : "+46 322 12 34 56",
  "mobilePhone" : "+46 322 65 43 21",
  "fax" : "+46 322 12 34 56"
}

Get member user details

Returns detailed information about a member user.

GET /api/members/43/users/43 HTTP/1.1

Path parameters

Table 13. /members/{memberId}/users/{userId}
Parameter Description

memberId

Unique member ID.

userId

User unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

User unique ID.

name

String

User name.

email

String

User email address.

fax

String

User fax number.

phone

String

User phone number.

mobilePhone

String

User mobile phone number.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/users/43' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 186

{
  "id" : 43,
  "name" : "Test User43",
  "email" : "test.email43@kofax.com",
  "phone" : "+46 322 12 34 56",
  "mobilePhone" : "+46 322 56 43 21",
  "fax" : "+46 322 12 34 56"
}

Update member user

Updates a member user.

PATCH /api/members/43/users/43 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 34

{
  "fax" : "+46 322 99 99 99"
}

Path parameters

Table 14. /members/{memberId}/users/{userId}
Parameter Description

memberId

Unique member ID.

userId

User unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

User unique ID.

name

String

User name.

email

String

User email address.

fax

String

User fax number.

phone

String

User phone number.

mobilePhone

String

User mobile phone number.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/users/43' -i -X PATCH \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "fax" : "+46 322 99 99 99"
}'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 186

{
  "id" : 43,
  "name" : "Test User43",
  "email" : "test.email43@kofax.com",
  "phone" : "+46 322 12 34 56",
  "mobilePhone" : "+46 322 56 43 21",
  "fax" : "+46 322 99 99 99"
}

Delete member user

Removes a member user.

DELETE /api/members/43/users/25 HTTP/1.1

Path parameters

Table 15. /members/{memberId}/users/{userId}
Parameter Description

memberId

Unique member ID.

userId

User unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

No content.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/users/25' -i -X DELETE

Example response

HTTP/1.1 204 No Content

Member payment means endpoint

This endpoint is a collection resource that manages member payment means.

Get member payment means collection

Returns a list of member payment means.

GET /api/members/43/paymentMeans HTTP/1.1
Accept: application/json

Path parameters

Table 16. /members/{memberId}/paymentMeans
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of payment means objects.

items[].id

Number

Payment means unique ID.

items[].type

String

Name of the payment means type.

items[].subtype

String

Payment means subtype value.

items[].account

String

Payment means account value.

items[].swiftCode

String

SWIFT code.

items[].branchCode

String

Identification of branch or office within institution, such as clearing no.

items[].bankName

String

Name of the payment service institution, such as the name of the bank

items[].cardNetworkId

String

Card network identification, such as Mastercard.

items[].cardHolderName

String

Card holder name.

items[].paymentMandate

String

Payment mandate.

items[].payerFinancialAccount

String

Payer financial account value.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/paymentMeans' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 119

{
  "count" : 1,
  "items" : [ {
    "id" : 89,
    "type" : "IBAN",
    "account" : "00000058398257466"
  } ]
}

Add member payment means

Creates a new payment means and associates it with a member.

POST /api/members/43/paymentMeans HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 131

{
  "cardNetworkId" : "Mastercard",
  "cardHolderName" : "Name Surname",
  "type" : "CARD",
  "account" : "1234567890123456"
}

Path parameters

Table 17. /members/{memberId}/paymentMeans
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

Path Type Description

type

String

Name of the payment means type.

subtype

String

Payment means subtype value.

account

String

Payment means account value.

swiftCode

String

SWIFT code.

branchCode

String

Identification of branch or office within institution, such as clearing no.

bankName

String

Name of the payment service institution, such as the name of the bank

cardNetworkId

String

Card network identification, such as Mastercard.

cardHolderName

String

Card holder name.

paymentMandate

String

Payment mandate.

payerFinancialAccount

String

Payer financial account value.

Response fields

Path Type Description

id

Number

Payment means unique ID.

type

String

Name of the payment means type.

subtype

String

Payment means subtype value.

account

String

Payment means account value.

swiftCode

String

SWIFT code.

branchCode

String

Identification of branch or office within institution, such as clearing no.

bankName

String

Name of the payment service institution, such as the name of the bank

cardNetworkId

String

Card network identification, such as Mastercard.

cardHolderName

String

Card holder name.

paymentMandate

String

Payment mandate.

payerFinancialAccount

String

Payer financial account value.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/paymentMeans' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "cardNetworkId" : "Mastercard",
  "cardHolderName" : "Name Surname",
  "type" : "CARD",
  "account" : "1234567890123456"
}'

Example response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 147

{
  "id" : 9345,
  "type" : "CARD",
  "account" : "1234567890123456",
  "cardNetworkId" : "Mastercard",
  "cardHolderName" : "Name Surname"
}

Get member payment means details

Returns detailed information about a member payment means.

GET /api/members/43/paymentMeans/507 HTTP/1.1
Accept: application/json

Path parameters

Table 18. /members/{memberId}/paymentMeans/{paymentMeansId}
Parameter Description

memberId

Unique member ID.

paymentMeansId

Payment means unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Payment means unique ID.

type

String

Name of the payment means type.

subtype

String

Payment means subtype value.

account

String

Payment means account value.

swiftCode

String

SWIFT code.

branchCode

String

Identification of branch or office within institution, such as clearing no.

bankName

String

Name of the payment service institution, such as the name of the bank

cardNetworkId

String

Card network identification, such as Mastercard.

cardHolderName

String

Card holder name.

paymentMandate

String

Payment mandate.

payerFinancialAccount

String

Payer financial account value.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/paymentMeans/507' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 74

{
  "id" : 507,
  "type" : "IBAN",
  "account" : "00000058398257466"
}

Remove member payment means

Removes a member payment means.

DELETE /api/members/43/paymentMeans/881 HTTP/1.1
Accept: application/json

Path parameters

Table 19. /members/{memberId}/paymentMeans/{paymentMeansId}
Parameter Description

memberId

Unique member ID.

paymentMeansId

Payment means unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

No content.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/paymentMeans/881' -i -X DELETE \
    -H 'Accept: application/json'

Example response

HTTP/1.1 204 No Content

Invoice Delivery and Status Management

This second major part of the API is the core functionality that allows to get information about incoming invoices processed by e-Invoice Connect for members, as well as to receive invoice and invoice attachment payloads.

It also covers what can be done in terms of managing the invoice status.

Invoice endpoint

This endpoint is a collection resource that manages received member invoices.

Get member invoices / invoice lookup

Returns a list of invoices received for members and stored by e-Invoice Connect.

GET /api/members/43/invoices HTTP/1.1

Path parameters

Table 20. /members/{memberId}/invoices
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Type Description

q

Object

Optional extended query for invoice lookup and filtering. The parameters that can be specified for the invoice search are:

1. status - invoice status

2. senderName - legal name of a sending party

3. invoiceNo - invoice number. The full number must be given. The comparison is not case sensitive.

4. invoiceDate - invoice date

5. arrivedAt - date and time invoice arrived at

6. recipientIdentifier - filter by recipient identifier within the member. An object with a required identifier (the identifier value, e.g. a SIRET) and an optional type (the party identifier detailed type, e.g. FR:SIRET). When type is omitted, any detailed type matches. Matches the value against the recipient’s identifiers on the invoice: the recipient address identifier or the receiving party’s party identifiers (the buyer for an ordinary invoice, the supplier for a self-billed invoice).

sort

String

Optional sorting parameter. The properties that can be specified for sorting are:

1. id - invoice ID

2. invoiceType - invoice type

3. typeOfSending - invoice sending type

4. invoiceNo - invoice number

5. invoiceDate - invoice date

6. dueDate - invoice due date

7. arrivedAt - date and time invoice arrived at

8. receivedAt - date and time invoice was received at

9. deliveredAt - date and time invoice was delivered at

10. verifiedAt - date and time invoice was verified at

11. approvedAt - date and time invoice was approved at

12. currency - invoice currency

13. toPay - invoice total amount

14. selfBillingOnly - if true - list only self-billing invoices when applicable

Supports standard paging query parameters.

Request fields

No request body.

Response fields

Path Type Description

page

Number

Page number.

count

Number

Actual size of content array (number of items).

total

Number

Total number of existing items.

pages

Number

Total number of pages with current page size.

items

Array

Array of invoice objects.

items[].id

Number

Invoice unique ID.

items[].invoiceType

String

Invoice type code.

items[].typeOfSending

String

Type of invoice sending: eInvoice, email, print or reporting.

items[].status

String

Invoice status.

items[].invoiceNo

String

Invoice number assigned by the sender.

items[].senderName

String

Name of the invoice sender.

items[].senderIdentifiers

Array

The invoice sender party identifier object array.

items[].invoiceDate

String

Invoice date.

items[].dueDate

String

Invoice due date.

items[].arrivedAt

String

Date and time of the invoice arrival.

items[].receivedAt

String

Date and time of the invoice receiving by the receiving member.

items[].deliveredAt

String

Date and time of changing the invoice status to Delivered.

items[].verifiedAt

String

Date and time of changing the invoice status to Verified.

items[].approvedAt

String

Date and time of changing the invoice status to Approved.

items[].appovedAt

String

Deprecated field superseded by approvedAt.

items[].currency

String

Invoice currency represented as a three-letter ISO-4217 code.

items[].toPay

Number

Total amount to pay including VAT.

items[].errors

Array

Array of text items with invoice errors.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices' -i -X GET

Example request - filter by recipient identifier

$ curl 'https://web.invoiceportal.net/api/members/43/invoices?q=%7B%22recipientIdentifier%22%3A%7B%22identifier%22%3A%22732+829+320+00074%22%2C%22type%22%3A%22FR%3ASIRET%22%7D%7D' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1195

{
  "page" : 1,
  "count" : 2,
  "total" : 2,
  "pages" : 1,
  "items" : [ {
    "id" : 59,
    "invoiceType" : "Debit",
    "typeOfSending" : "eInvoice",
    "status" : "Received",
    "invoiceNo" : "invoice@2024-07#416",
    "senderName" : "Test Member62",
    "senderIdentifiers" : [ ],
    "invoiceDate" : "2026-08-17",
    "dueDate" : "2026-09-01",
    "arrivedAt" : "2026-08-17T14:58:21+02:00",
    "receivedAt" : "2026-08-17T14:58:23+02:00",
    "currency" : "SEK",
    "toPay" : 12028,
    "errors" : [ ]
  }, {
    "id" : 64,
    "invoiceType" : "Debit",
    "typeOfSending" : "eInvoice",
    "status" : "Approved",
    "invoiceNo" : "invoice@2024-07#480",
    "senderName" : "Test Member62",
    "senderIdentifiers" : [ ],
    "invoiceDate" : "2026-08-17",
    "dueDate" : "2026-08-27",
    "arrivedAt" : "2026-08-17T14:58:21+02:00",
    "receivedAt" : "2026-08-17T14:58:24+02:00",
    "deliveredAt" : "2026-08-17T15:10:03+02:00",
    "verifiedAt" : "2026-08-17T17:03:43+02:00",
    "approvedAt" : "2026-08-17T19:12:52+02:00",
    "appovedAt" : "2026-08-17T19:12:52+02:00",
    "currency" : "EUR",
    "toPay" : 510.5,
    "errors" : [ ]
  } ]
}

Get member invoice details

Returns detailed information about an invoice processed for a member.

GET /api/members/43/invoices/59 HTTP/1.1

Path parameters

Table 21. /members/{memberId}/invoices/{invoiceId}
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Invoice unique ID.

invoiceType

String

Invoice type code.

typeOfSending

String

Type of invoice sending: eInvoice, email, print or reporting.

invoicingMode

String

Type of invoice mode: currently only SB can be expected in output for Self-billing mode.

status

String

Invoice status.

invoiceNo

String

Invoice number assigned by the sender.

senderName

String

Name of the invoice sender.

senderIdentifiers

Array

The invoice sender party identifier object array.

invoiceDate

String

Invoice date.

dueDate

String

Invoice due date.

arrivedAt

String

Date and time of the invoice arrival.

receivedAt

String

Date and time of the invoice receiving by the receiving member.

deliveredAt

String

Date and time of changing the invoice status to Delivered.

verifiedAt

String

Date and time of changing the invoice status to Verified.

approvedAt

String

Date and time of changing the invoice status to Approved.

appovedAt

String

Deprecated field superseded by approvedAt.

currency

String

Invoice currency represented as a three-letter ISO-4217 code.

toPay

Number

Total amount to pay including VAT.

totalExclVat

Number

Total amount excluding VAT.

totalInclVat

Number

Total amount including VAT but excluding round off.

totalPrepaidAmount

Number

Total prepaid amount.

attachmentCount

Number

Number of the invoice attachments.

contentRejectForbidden

Boolean

Attribute that shows if the invoice rejection is forbidden per agreement with a sending operator.

correctingInvoiceId

Number

ID of another invoice that is considered as more recent version of this one.

errors

Array

Array of strings with invoice errors.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 752

{
  "id" : 59,
  "invoiceType" : "Debit",
  "typeOfSending" : "eInvoice",
  "status" : "Received",
  "invoiceNo" : "invoice-Property[weekyear]413",
  "senderName" : "Test Member62",
  "senderIdentifiers" : [ {
    "id" : 62,
    "type" : "SE:ORGNR",
    "detailedType" : "SE:ORGNR",
    "countryId" : "SE",
    "identifier" : "6219452148"
  }, {
    "id" : 63,
    "type" : "GLN",
    "detailedType" : "GLN",
    "identifier" : "6332547878731"
  } ],
  "invoiceDate" : "2026-08-17",
  "dueDate" : "2026-09-16",
  "arrivedAt" : "2026-08-17T14:57:56+02:00",
  "receivedAt" : "2026-08-17T14:57:56+02:00",
  "currency" : "SEK",
  "toPay" : 3000059,
  "attachmentCount" : 0,
  "contentRejectForbidden" : false,
  "errors" : [ ]
}

Download invoice

Downloads an XML document containing invoice payload.

The payload document has the e-Invoice Connect defined XML schema ESXML2.
GET /api/members/43/invoices/59/payload HTTP/1.1
Accept: application/xml, application/json

Path parameters

Table 22. /members/{memberId}/invoices/{invoiceId}/payload
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns invoice payload or the 404 (Not Found) error code if not found.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59/payload' -i -X GET \
    -H 'Accept: application/xml, application/json'

Example response

HTTP/1.1 200 OK
Content-Disposition: form-data; name="attachment"; filename="invoice.xml"
Content-Type: application/xml
Content-Length: 44
Accept-Ranges: bytes

[ Body containing the invoice XML document ]
To avoid an error response, the Accept header for this request must include the application/xml content type of the payload.

Get member test clearance invoices

Test API endpoints currently support only Polish and French clearance flows.

Returns a list of test clearance invoices received for members and stored by e-Invoice Connect. This endpoint only returns invoices that were submitted via the test invoice submission API endpoint.

GET /api/members/43/test-invoices HTTP/1.1

Path parameters

Table 23. /members/{memberId}/test-invoices
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Type Description

q

Object

Optional extended query for invoice lookup and filtering. The parameters that can be specified for the invoice search are:

1. status - invoice status

2. senderName - legal name of a sending party

3. invoiceNo - invoice number. The full number must be given. The comparison is not case sensitive.

4. invoiceDate - invoice date

5. arrivedAt - date and time invoice arrived at

sort

String

Optional sorting parameter. The properties that can be specified for sorting are:

1. id - invoice ID

2. invoiceType - invoice type

3. typeOfSending - invoice sending type

4. invoiceNo - invoice number

5. invoiceDate - invoice date

6. dueDate - invoice due date

7. arrivedAt - date and time invoice arrived at

8. receivedAt - date and time invoice was received at

9. deliveredAt - date and time invoice was delivered at

10. verifiedAt - date and time invoice was verified at

11. approvedAt - date and time invoice was approved at

12. currency - invoice currency

13. toPay - invoice total amount

14. selfBillingOnly - if true - list only self-billing invoices when applicable

Supports standard paging query parameters.

Request fields

No request body.

Response fields

Path Type Description

page

Number

Page number.

count

Number

Actual size of content array (number of items).

total

Number

Total number of existing items.

pages

Number

Total number of pages with current page size.

items

Array

Array of invoice objects.

items[].id

Number

Invoice unique ID.

items[].invoiceType

String

Invoice type code.

items[].typeOfSending

String

Type of invoice sending: eInvoice, email, print or reporting.

items[].status

String

Invoice status.

items[].invoiceNo

String

Invoice number assigned by the sender.

items[].senderName

String

Name of the invoice sender.

items[].senderIdentifiers

Array

The invoice sender party identifier object array.

items[].invoiceDate

String

Invoice date.

items[].dueDate

String

Invoice due date.

items[].arrivedAt

String

Date and time of the invoice arrival.

items[].receivedAt

String

Date and time of the invoice receiving by the receiving member.

items[].deliveredAt

String

Date and time of changing the invoice status to Delivered.

items[].verifiedAt

String

Date and time of changing the invoice status to Verified.

items[].approvedAt

String

Date and time of changing the invoice status to Approved.

items[].appovedAt

String

Deprecated field superseded by approvedAt.

items[].currency

String

Invoice currency represented as a three-letter ISO-4217 code.

items[].toPay

Number

Total amount to pay including VAT.

items[].errors

Array

Array of text items with invoice errors.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 999

{
  "page" : 1,
  "count" : 2,
  "total" : 2,
  "pages" : 1,
  "items" : [ {
    "id" : 59,
    "invoiceType" : "Debit",
    "typeOfSending" : "eInvoice",
    "status" : "Received",
    "invoiceNo" : "invoice@2024-07#416",
    "senderName" : "Test Member62",
    "senderIdentifiers" : [ ],
    "invoiceDate" : "2026-08-17",
    "dueDate" : "2026-09-01",
    "arrivedAt" : "2026-08-17T14:59:23+02:00",
    "receivedAt" : "2026-08-17T14:59:25+02:00",
    "currency" : "SEK",
    "toPay" : 12028,
    "errors" : [ ]
  }, {
    "id" : 64,
    "invoiceType" : "Debit",
    "typeOfSending" : "eInvoice",
    "status" : "Received",
    "invoiceNo" : "invoice@2024-07#480",
    "senderName" : "Test Member62",
    "senderIdentifiers" : [ ],
    "invoiceDate" : "2026-08-17",
    "dueDate" : "2026-08-27",
    "arrivedAt" : "2026-08-17T14:59:23+02:00",
    "receivedAt" : "2026-08-17T14:59:26+02:00",
    "currency" : "EUR",
    "toPay" : 510.5,
    "errors" : [ ]
  } ]
}

Download test invoice payload

Test API endpoints currently support only Polish and French clearance flows.

Downloads an XML document containing test invoice payload. This endpoint only returns invoices that were submitted via the test invoice submission API endpoint.

The payload document has the e-Invoice Connect defined XML schema ESXML2.
GET /api/members/43/test-invoices/59/payload HTTP/1.1
Accept: application/xml, application/json

Path parameters

Table 24. /members/{memberId}/test-invoices/{invoiceId}/payload
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns test invoice payload or the 404 (Not Found) error code if not found or if the invoice is not a test invoice.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/59/payload' -i -X GET \
    -H 'Accept: application/xml, application/json'

Example response

HTTP/1.1 200 OK
Content-Disposition: form-data; name="attachment"; filename="test-invoice.xml"
Content-Type: application/xml
Content-Length: 44
Accept-Ranges: bytes

[ Body containing the invoice XML document ]
To avoid an error response, the Accept header for this request must include the application/xml content type of the payload.

Download original invoice

Downloads a document that a given member invoice originated from. It contains information that was received by e-Invoice Connect from an external invoice operator or via a configured business integration of a sending member or via the invoice sending API.

GET /api/members/43/invoices/59/original HTTP/1.1
Accept: application/xml, application/json

Path parameters

Table 25. /members/{memberId}/invoices/{invoiceId}/original
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns an original incoming document for an invoice, the 404 (Not Found) error code if not found, or the 204 (No Content) status code if the original file is still being processed and cannot be returned yet.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59/original' -i -X GET \
    -H 'Accept: application/xml, application/json'

Example response

HTTP/1.1 200 OK
Content-Disposition: attachment;filename=invoice.xml
Content-Type: application/xml
Content-Length: 44
Accept-Ranges: bytes

[ Body containing the invoice XML document ]
To avoid an error response, the Accept header for this request must include the application/xml content type of the payload.

Download original test invoice

Test API endpoints currently support only Polish and French clearance flows.

Downloads a document that a given test invoice originated from. It contains information received by e-Invoice Connect from an external invoice operator or via a configured business integration of a sending member or via the test invoice submission API. This endpoint only returns invoices that were submitted via the test invoice submission API endpoint.

GET /api/members/43/test-invoices/59/original HTTP/1.1
Accept: application/xml, application/json

Path parameters

Table 26. /members/{memberId}/test-invoices/{invoiceId}/original
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns an original incoming document for the test invoice, the 404 (Not Found) error code if not found or if the invoice is not a test invoice, or the 204 (No Content) status code if the original file is still being processed and cannot be returned yet.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/59/original' -i -X GET \
    -H 'Accept: application/xml, application/json'

Example response

HTTP/1.1 200 OK
Content-Disposition: attachment;filename=invoice.xml
Content-Type: application/xml
Content-Length: 44
Accept-Ranges: bytes

[ Body containing the invoice XML document ]
To avoid an error response, the Accept header for this request must include the application/xml content type of the payload.

Update invoice status

Changes the invoice status.

To change the invoice status, send a PATCH request with a JSON document in the request body, containing the new status value set in the status property.

Find here the information about the basic invoice statuses. Find here the information about the business-level statuses, which can be set by or on behalf of the invoice recipient.

If the invoice is in the Pending status, you can accept the invoice content by changing status to Received.

If the invoice is in the Pending or Received status, you can reject the invoice content by changing status to Rejected along with setting an optional error message in the error JSON property. Rejecting an invoice may trigger an electronic notification containing the error message to be sent to the sending party or operator.

A request to change the invoice status to one of the business-level statuses can also include any number of arbitrary status properties defined as a collection of key-value pairs. These user-defined properties can be set using the statusFields property. If the invoice sender is part of a properly configured partner, they will receive the status change electronic notification along with the specified key-value properties.

Properties that belong to one repeating or nested structure must be sent in the statusGroups property instead, not as repeated entries in statusFields. See Example 3 below.

Table 27. Allowed invoice status transitions
From To

Pending

Received, Acknowledged, Queried, Invalidated, Verified, ConditionallyAccepted, PartiallyApproved, Approved, Paid, Rejected

Received

Acknowledged, Queried, Invalidated, Verified, ConditionallyAccepted, PartiallyApproved, Approved, Paid, Rejected

Delivered

Acknowledged, Queried, Invalidated, Verified, ConditionallyAccepted, PartiallyApproved, Approved, Paid, Rejected

Queried

Invalidated, Verified, ConditionallyAccepted, PartiallyApproved, Approved, Paid, Rejected

Invalidated

Verified, ConditionallyAccepted, PartiallyApproved, Approved, Paid, Rejected

Verified

ConditionallyAccepted, PartiallyApproved, Approved, Paid, Rejected

ConditionallyAccepted

PartiallyApproved, Approved, Paid, Rejected

Approved

Paid

In many cases, the business-level status change will be accepted even if the requested status is not listed in the table above. For instance, a request to set the status to Approved can be sent for a Paid invoice. The system processes such requests by setting a timestamp property related to the requested status, as outlined in the table below. In this example, the invoice status will remain Paid, but the invoice’s approvedAt timestamp will be updated. The invoice sender may also be notified of the status change to Approved, along with any additional status fields set by or on behalf of the invoice recipient.

Table 28. Invoice status timestamps
Status Name

Delivered

deliveredAt

Acknowledged

acknowledgedByRecipientAt

Queried

queriedAt

Invalidated

invalidatedAt

Verified

verifiedAt

ConditionallyAccepted

conditionallyAcceptedAt

PartiallyApproved

partiallyApprovedAt

Approved

approvedAt

Completed

completedAt

Paid

paidAt

PaymentCollected

paymentCollectedAt

Rejected

rejectedAt

Example 1: standard status update
PATCH /api/members/43/invoices/59 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 150

{
  "status" : "Paid",
  "statusFields" : {
    "items" : [
      { "name" : "paymentReference", "value" : "IVA-123" },
      { "name" : "paymentDate", "value" : "2025-12-22" }
    ]
  }
}
Example 2: status document submission, flat supplemental data
PATCH /api/members/43/invoices/59 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 282

{
  "status" : "Approved",
  "statusDocument" : "true",
  "statusFields" : {
    "items" : [ {
      "name" : "Date",
      "value" : "20260131"
    }, {
      "name" : "Time",
      "value" : "100000"
    }, {
      "name" : "DIR",
      "value" : "SE"
    } ]
  }
}

Supplemental data whose fields belong together — one amount per VAT rate, an address, a contact — must be sent in statusGroups. Repeating the fields in statusFields cannot express which value belongs with which, and the receiving platform has no way to reconstruct it.

The example below submits PaymentCollected, the status the AMOUNT_LINE group exists for: the collected amount has to be distributed per VAT rate, one group per rate. Note that it is sent by the supplier, since PaymentCollected is a supplier-only status.

Example 3: status document submission with grouped supplemental data
PATCH /api/members/43/invoices/59 HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1432

{
  "status" : "PaymentCollected",
  "statusDocument" : "true",
  "statusFields" : {
    "items" : [ {
      "name" : "Date",
      "value" : "20260131"
    }, {
      "name" : "Time",
      "value" : "100000"
    } ]
  },
  "statusGroups" : {
    "items" : [ {
      "code" : "AMOUNT_LINE",
      "fields" : {
        "items" : [ {
          "name" : "DDT",
          "value" : "MEN"
        }, {
          "name" : "AM",
          "value" : "12000"
        }, {
          "name" : "CU",
          "value" : "EUR"
        }, {
          "name" : "PER",
          "value" : "20.00"
        } ]
      }
    }, {
      "code" : "AMOUNT_LINE",
      "fields" : {
        "items" : [ {
          "name" : "DDT",
          "value" : "MEN"
        }, {
          "name" : "AM",
          "value" : "5000"
        }, {
          "name" : "CU",
          "value" : "EUR"
        }, {
          "name" : "PER",
          "value" : "10.00"
        } ]
      }
    }, {
      "code" : "ISSUER_CONTACT",
      "fields" : {
        "items" : [ {
          "name" : "DICN",
          "value" : "M. Emetteur"
        } ]
      },
      "groups" : {
        "items" : [ {
          "code" : "PHONE",
          "fields" : {
            "items" : [ {
              "name" : "DICP",
              "value" : "+33100000001"
            } ]
          }
        } ]
      }
    } ]
  }
}
Example response
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 752

{
  "id" : 59,
  "invoiceType" : "Debit",
  "typeOfSending" : "eInvoice",
  "status" : "Received",
  "invoiceNo" : "invoice-Property[weekyear]413",
  "senderName" : "Test Member62",
  "senderIdentifiers" : [ {
    "id" : 62,
    "type" : "SE:ORGNR",
    "detailedType" : "SE:ORGNR",
    "countryId" : "SE",
    "identifier" : "6219171615"
  }, {
    "id" : 63,
    "type" : "GLN",
    "detailedType" : "GLN",
    "identifier" : "6303260849353"
  } ],
  "invoiceDate" : "2026-08-17",
  "dueDate" : "2026-09-16",
  "arrivedAt" : "2026-08-17T14:58:09+02:00",
  "receivedAt" : "2026-08-17T14:58:09+02:00",
  "currency" : "SEK",
  "toPay" : 3000059,
  "attachmentCount" : 0,
  "contentRejectForbidden" : false,
  "errors" : [ ]
}

Path parameters

Table 29. /members/{memberId}/invoices/{invoiceId}
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

Path Type Description

status

String

New invoice status. See the transition table above.

statusDocument

String

Optional. When set to "true", the request is treated as a trackable status document submission. A tracking record is created and a response message is exported for delivery to the clearance platform. The invoice state (status, timestamps, logs) is not changed by this request. When absent or set to "false", the request follows the standard status update flow. The statuses Completed and PaymentCollected, and the statusGroups property, require statusDocument to be "true".

statusFields

Object

Optional. Arbitrary user-defined status properties whose fields stand on their own. Some fields submitted as part of a status document submission may require specific coded values.

statusFields.items[]

Array

Array of key/value pair objects, exported in the order given.

statusFields.items[].name

String

Property name. A mandatory, non-blank string, up to 255 characters in length. Repeated names are permitted: every entry is exported, in the order given.

statusFields.items[].value

String

Property value. An optional string, up to 65535 characters in length.

statusGroups

Object

Supplemental data whose fields belong together, for a repeating or nested structure. Only valid when statusDocument is "true".

statusGroups.items[]

Array

Array of groups, exported in the order given. Repeated group codes are allowed - two AMOUNT_LINE groups are two distinct amounts.

statusGroups.items[].code

String

Group type. Mandatory, non-blank, up to 30 characters. One of AMOUNT_LINE, STATUS_REASON, ISSUER_CONTACT, RECIPIENT_CONTACT, PHONE, FAX, EMAIL, ISSUER_ADDRESS, RECIPIENT_ADDRESS, DOC_NOTE, EFFECTIVE_PERIOD, STATUS_NOTE, STATUS_CONDITION, REASON_INFORMATION, REASON_CLASSIFICATION, REQUESTED_ACTION.

statusGroups.items[].fields

Object

The group’s own fields.

statusGroups.items[].fields.items[]

Array

Array of name/value pairs belonging to this group instance.

statusGroups.items[].fields.items[].name

String

Field code. Mandatory, non-blank, up to 30 characters.

statusGroups.items[].fields.items[].value

String

Field value. Optional, up to 512 characters.

statusGroups.items[].groups

Object

Nested groups. Nesting is limited to two levels in total.

statusGroups.items[].groups.items[]

Array

Array of nested groups, same shape as statusGroups.items[].

statusGroups.items[].groups.items[].code

String

Nested group type.

statusGroups.items[].groups.items[].fields

Object

The nested group’s own fields.

statusGroups.items[].groups.items[].fields.items[]

Array

Array of name/value pairs belonging to the nested group.

statusGroups.items[].groups.items[].fields.items[].name

String

Field code.

statusGroups.items[].groups.items[].fields.items[].value

String

Field value.

A group must carry at least one field or one nested group. Sending statusGroups without statusDocument set to "true" returns 400 Bad Request.

When statusDocument is set to "true", the following prerequisites must be met:

  • The invoice must have completed clearance or retrieval (confirmed by invoice history).

  • The member must have active CTC onboarding status with the relevant service enabled (clearance for suppliers, retrieval for buyers).

  • The submitted status must match the member’s role on the invoice. Statuses Completed and PaymentCollected can only be submitted by the supplier; all other statuses can only be submitted by the buyer.

If any prerequisite fails, the request returns a 400 Bad Request error with a descriptive message.

A 409 Conflict is returned for transient states where the invoice cannot be processed yet but the same request may succeed if resubmitted later: another status update for the invoice is still pending acknowledgement, or the original invoice submitted by the supplier or buyer has not yet been fully processed. In these cases the caller should retry the request later.

Supplemental data that cannot be represented is rejected before anything is submitted, and the request returns a 400 Bad Request error with one of the following messages:

  • Every supplemental data field must have a name

  • Every supplemental data group must have a name of at most 30 characters

  • Supplemental data groups cannot be nested more than 2 levels deep

  • Every field in a supplemental data group must have a name of at most 30 characters

  • A field value in a supplemental data group cannot be longer than 512 characters

  • A supplemental data group must contain at least one field or one nested group

  • A status update cannot carry more than 100 supplemental data groups or 1000 supplemental data fields

These are checks on the shape of the request only. The codes and values themselves are passed through to the clearance platform, which is the authority on which of them a given status requires.

Response fields

See the response field information here.

Update test invoice status

Changes the status of a test (pre-production) invoice. The request body and behavior are identical to the Update invoice status endpoint, only invoices associated with the pre-production (test) flow can be accessed via this endpoint.

PATCH /api/members/{memberId}/test-invoices/{invoiceId} HTTP/1.1
Content-Type: application/json
Accept: application/json

Path parameters

Table 30. /members/{memberId}/test-invoices/{invoiceId}
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Response fields

See the response field information here.

Get invoice status updates

Returns a list of status document tracking records for the specified invoice. Only status updates submitted with statusDocument set to "true" are listed.

GET /api/members/{memberId}/invoices/{invoiceId}/status-updates HTTP/1.1
Accept: application/json

Path parameters

Table 31. /members/{memberId}/invoices/{invoiceId}/status-updates
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Response fields

Path Type Description

count

Number

Total number of status update records.

items[]

Array

Array of status update records.

items[].trackingId

String

Unique tracking identifier (UUID) assigned to the status document submission.

items[].invoiceStatus

String

The business-level status that was submitted (e.g., Approved, Paid).

items[].status

String

Processing status of the tracking record. One of: accepted, processing, forwarded, delivered, failed.

items[].statusReason

String

Explanatory message when status is failed. Null otherwise.

items[].createdAt

String

ISO 8601 timestamp of when the status document was submitted.

items[].updatedAt

String

ISO 8601 timestamp of the last update to this tracking record.

Example response
{
  "count" : 2,
  "items" : [
    {
      "trackingId" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "invoiceStatus" : "Approved",
      "status" : "delivered",
      "statusReason" : null,
      "createdAt" : "2026-05-15T10:30:00.000+02:00",
      "updatedAt" : "2026-05-15T10:42:15.000+02:00"
    },
    {
      "trackingId" : "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "invoiceStatus" : "Paid",
      "status" : "accepted",
      "statusReason" : null,
      "createdAt" : "2026-05-20T11:00:00.000+02:00",
      "updatedAt" : "2026-05-20T11:00:05.000+02:00"
    }
  ]
}

Get test invoice status updates

Returns a list of status document tracking records for a test (pre-production) invoice. Behavior is identical to Get invoice status updates, but restricted to test flow invoices.

GET /api/members/{memberId}/test-invoices/{invoiceId}/status-updates HTTP/1.1
Accept: application/json

Path parameters

Table 32. /members/{memberId}/test-invoices/{invoiceId}/status-updates
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Invoice attachment endpoint

This endpoint is a collection resource that manages invoice attachments.

Get invoice attachments

Returns a list of invoice attachments.

GET /api/members/43/invoices/59/attachments HTTP/1.1

Path parameters

Table 33. /members/{memberId}/invoices/{invoiceId}/attachments
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of the invoice attachment objects.

items[].id

Number

Attachment unique ID.

items[].fileName

String

Attachment file name.

items[].size

Number

Attachment file size.

items[].mimeType

String

Attachment content type.

items[].attachmentType

String

Attachment document type.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59/attachments' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 474

{
  "count" : 3,
  "items" : [ {
    "id" : 27,
    "fileName" : "attachment27.txt",
    "size" : 46,
    "mimeType" : "text/plain",
    "attachmentType" : "Regular"
  }, {
    "id" : 34,
    "fileName" : "attachment34.txt",
    "size" : 46,
    "mimeType" : "text/plain",
    "attachmentType" : "Regular"
  }, {
    "id" : 41,
    "fileName" : "attachment41.txt",
    "size" : 46,
    "mimeType" : "text/plain",
    "attachmentType" : "Regular"
  } ]
}

Get invoice attachment details

Returns detailed information about an invoice attachment.

GET /api/members/43/invoices/59/attachments/27 HTTP/1.1

Path parameters

Table 34. /members/{memberId}/invoices/{invoiceId}/attachments/{attachmentId}
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

attachmentId

Invoice attachment unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Attachment unique ID.

fileName

String

Attachment file name.

size

Number

Attachment file size.

mimeType

String

Attachment content type.

attachmentType

String

Attachment document type.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59/attachments/27' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 132

{
  "id" : 27,
  "fileName" : "attachment27.txt",
  "size" : 46,
  "mimeType" : "text/plain",
  "attachmentType" : "Regular"
}

Download invoice attachment

Downloads an invoice attachment.

GET /api/members/43/invoices/59/attachments/27/payload HTTP/1.1
Accept: */*, application/json

Path parameters

Table 35. /members/{memberId}/invoices/{invoiceId}/attachments/{attachmentId}/payload
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

attachmentId

Invoice attachment unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns the invoice attachment payload or the 404 (Not Found) error code if not found.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59/attachments/27/payload' -i -X GET \
    -H 'Accept: */*, application/json'

Example response

HTTP/1.1 200 OK
Content-Disposition: attachment;filename=attachment27.txt
Content-Type: text/plain
Content-Length: 46
Accept-Ranges: bytes

[ Body containing the binary attachment file ]
To avoid an error response, the Accept header for this request must include the content type of the payload, which in this case may be literally any. Therefore, it is recommended to include */* wildcard types.

Get test invoice attachments

Test API endpoints currently support only Polish and French clearance flows.

Returns a list of test invoice attachments. This endpoint only returns attachments of invoices that were submitted via the test invoice submission API endpoint.

GET /api/members/43/test-invoices/59/attachments HTTP/1.1

Path parameters

Table 36. /members/{memberId}/test-invoices/{invoiceId}/attachments
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns the list of attachments, or the 404 (Not Found) error code if the invoice is not found or is not a test invoice.

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of the invoice attachment objects.

items[].id

Number

Attachment unique ID.

items[].fileName

String

Attachment file name.

items[].size

Number

Attachment file size.

items[].mimeType

String

Attachment content type.

items[].attachmentType

String

Attachment document type.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/59/attachments' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 182

{
  "count" : 1,
  "items" : [ {
    "id" : 27,
    "fileName" : "attachment27.txt",
    "size" : 46,
    "mimeType" : "text/plain",
    "attachmentType" : "Regular"
  } ]
}

Get test invoice attachment details

Test API endpoints currently support only Polish and French clearance flows.

Returns detailed information about a test invoice attachment. This endpoint only returns an attachment of an invoice that was submitted via the test invoice submission API endpoint.

GET /api/members/43/test-invoices/59/attachments/27 HTTP/1.1

Path parameters

Table 37. /members/{memberId}/test-invoices/{invoiceId}/attachments/{attachmentId}
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

attachmentId

Invoice attachment unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns the 404 (Not Found) error code if the attachment or invoice is not found, or if the invoice is not a test invoice.

Path Type Description

id

Number

Attachment unique ID.

fileName

String

Attachment file name.

size

Number

Attachment file size.

mimeType

String

Attachment content type.

attachmentType

String

Attachment document type.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/59/attachments/27' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 132

{
  "id" : 27,
  "fileName" : "attachment27.txt",
  "size" : 46,
  "mimeType" : "text/plain",
  "attachmentType" : "Regular"
}

Download test invoice attachment

Test API endpoints currently support only Polish and French clearance flows.

Downloads a test invoice attachment. This endpoint only returns an attachment of an invoice that was submitted via the test invoice submission API endpoint.

GET /api/members/43/test-invoices/59/attachments/27/payload HTTP/1.1
Accept: */*, application/json

Path parameters

Table 38. /members/{memberId}/test-invoices/{invoiceId}/attachments/{attachmentId}/payload
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

attachmentId

Invoice attachment unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns the test invoice attachment payload, or the 404 (Not Found) error code if not found or if the invoice is not a test invoice.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/59/attachments/27/payload' -i -X GET \
    -H 'Accept: */*, application/json'

Example response

HTTP/1.1 200 OK
Content-Disposition: attachment;filename=attachment27.txt
Content-Type: text/plain
Content-Length: 46
Accept-Ranges: bytes

[ Body containing the binary attachment file ]
To avoid an error response, the Accept header for this request must include the content type of the payload, which in this case may be literally any. Therefore, it is recommended to include */* wildcard types.

Invoice Sending

This third major part of the API is a core functionality that allows to send invoices with e-Invoice Connect.

Invoice-sending API is now available for all members with a paid subscription. For the integrated products this API may be used by the products with which Tungsten Automation has agreements in place. If you are interested in utilizing this API for your product, please visit our customer or partner portal, or contact your Tungsten Automation sales representative for further information.

To send invoices an integrated product should be associated with a member enabled to use the e-Invoice Connect API. The member must meet the following requirements to complete the setup for invoice sending:

  1. Member must be active for any type of submissions.

  2. To submit invoices as a supplier member must:

    • configure the restricted sendingEnabled property and set it to true

    • configure payment means to have at least one payment means

    • have the ZIP code configured in the the legal address

  3. To submit invoices for e-reporting member must:

    • be onboarded with clearance service provider

    • enable clearance workflow to submit invoices for e-reporting.

A member created with sendingEnabled set to true and a payment means already meets the supplier requirements and is registered as a sender at creation time, so no further setup request is needed.

Once the requirements are met, the integrated product may send invoices on behalf of the member.

Invoice submission endpoint

This endpoint is a collection resource that is used for sending invoices and getting information about the status of sent invoices.

Submit invoice data for sending

Creates a new invoice to send on behalf of a member.

POST /api/members/43/invoices/submissions HTTP/1.1
Content-Type: application/xml
Accept: application/json
Content-Length: 44

[ Body containing the invoice XML document ]

Path parameters

Table 39. /members/{memberId}/invoices/submissions
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request headers

The Content-Type mandatory header defines the type of data the service expects to receive in the request body.

These content types are supported:

Content type Description

application/xml

The request body must contain a valid XML document.

The used XML format must follow the e-Invoice Connect defined XML schema ESXML2.

The document must contain one invoice.

Request body

The body must contain data which type matches the value of the Content-Type request header.

The invoice to submit must meet these requirements:

  • Invoice intended for delivery to a recipient must specify information to identify a recipient.

  • Invoice intended for e-reporting must have an invoice type that describes document subject for reporting.

  • Invoice must specify information to identify the sending member, the same one which ID is set to the memberId path parameter.

  • Invoice intended for delivery to a recipient must be valid against the validation rules of the recipient.

Response fields

Path Type Description

id

String

Invoice submission ID.

invoiceId

Number

Internal invoice ID once the invoice has been imported.

log

Object

Invoice processing history.

log.count

Number

Number of returned records in the history.

log.items[]

Array

History records.

log.items[].dateTime

String

Event date and time.

log.items[].eventType

String

Event type.

log.items[].errorType

String

Error type.

log.items[].errorText

String

Error text.

invoiceErrors

Array

Array of error strings describing the issues that occurred with the invoice upon processing, if any.

invoiceSendStatus

String

Sending status.

invoiceSendStatusDescription

String

Sending status description.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/submissions' -i -X POST \
    -H 'Content-Type: application/xml' \
    -H 'Accept: application/json' \
    -d '[ Body containing the invoice XML document ]'

Example response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 344

{
  "id" : "srq6idqm7pdpieq3twjc9ty1zw",
  "log" : {
    "count" : 1,
    "items" : [ {
      "dateTime" : "2023-12-25T00:59:59.000+01:00",
      "eventType" : "FileReceived"
    } ]
  },
  "invoiceErrors" : [ ],
  "invoiceSendStatus" : "InboundProcessing",
  "invoiceSendStatusDescription" : "Invoice document is being imported."
}

Get sent invoice status

Returns detailed information about an invoice sent on behalf of a member.

GET /api/members/43/invoices/submissions/1workmxidb883nxuq33at1odiw HTTP/1.1
Accept: application/json

Path parameters

Table 40. /members/{memberId}/invoices/submissions/{invoiceSid}
Parameter Description

memberId

Unique member ID.

invoiceSid

Invoice submission ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

String

Invoice submission ID.

invoiceId

Number

Internal invoice ID once the invoice has been imported.

log

Object

Invoice processing history.

log.count

Number

Number of returned records in the history.

log.items[]

Array

History records.

log.items[].dateTime

String

Event date and time.

log.items[].eventType

String

Event type.

log.items[].errorType

String

Error type.

log.items[].errorText

String

Error text.

log.items[].responseInfo

Object

Supplemental data carried by the response behind this record. Absent when there is none.

log.items[].responseInfo.count

Number

Number of supplemental data fields.

log.items[].responseInfo.items[]

Array

Supplemental data fields.

log.items[].responseInfo.items[].code

String

Field code.

log.items[].responseInfo.items[].description

String

Field value, or its translated description where the code is known.

log.items[].responseInfoGroups

Object

Supplemental data whose fields belong together, for a repeating or nested structure. A sibling of responseInfo, not a replacement: the fields listed there are unaffected. Absent when the record carries no grouped data.

log.items[].responseInfoGroups.count

Number

Number of groups.

log.items[].responseInfoGroups.items[]

Array

Groups, in the order received. Repeated group codes are meaningful - two AMOUNT_LINE groups are two distinct amounts.

log.items[].responseInfoGroups.items[].code

String

Group type, for instance AMOUNT_LINE.

log.items[].responseInfoGroups.items[].responseInfo

Object

The group’s own fields, in the same shape as log.items[].responseInfo.

log.items[].responseInfoGroups.items[].responseInfoGroups

Object

Nested groups, in the same shape as log.items[].responseInfoGroups. Nesting goes at most two levels deep.

invoiceErrors

Array

Array of error strings describing the issues that occurred with the invoice upon processing, if any.

invoiceSendStatus

String

Sending status.

invoiceSendStatusDescription

String

Sending status description.

invoiceReceiveStatus

String

Receiving status.

invoiceReceiveStatusDescription

String

Receiving status description.

log.items[].responseInfoGroups.items[] is recursive: every entry has the same code, responseInfo and responseInfoGroups shape as the entry above it, up to two levels deep. It reflects the grouped supplemental data of a status update — see statusGroups on the Update invoice status endpoint — while log.items[].responseInfo continues to carry the supplemental data that stands on its own.

Property invoiceSendStatus supports the following values:

Status Description

InboundProcessing

Invoice is being imported.

Draft

Invoice is yet to be sent.

Queued

Invoice is queued for printing.

ExceedingLimit

Invoice cannot be sent because the sending limit is exceeded.

Sent

Invoice is successfully sent.

SentSelfBilling

Self-billing invoice is successfully sent.

SentToOperator

Invoice is forwarded to a receiving operator.

Failed

Invoice is failed due to an error.

Deleted

Invoice is deleted.

InClearance

Invoice is sent for clearance.

Cleared

Invoice is successfully cleared.

Submitted

Invoice was submitted to the clearance operator by the clearance platform.

IssuedByPlatform

Invoice was issued by the clearance platform.

ReceivedByPlatform

Invoice was received by the clearance platform.

MadeAvailableByPlatform

Invoice was made available to the recipient by the clearance platform.

InReporting

Invoice is sent for reporting.

FailedReporting

Failed to report. Member configuration required.

Reported

Reported.

Property invoiceReceiveStatus supports the following values:

Status Description

Received

Invoice is successfully received by recipient.

Forwarded

Invoice is successfully received and forwarded to recipient via a configured business integration.

ForwardedToOperator

Invoice is forwarded to a receiving operator upon arrival, and a copy is expected to come back to finally be received by recipient.

FailedPending

Invoice has failed validation, but recipient is given a chance to correct/accept instead of rejecting.

FailedPendingManual

Invoice has failed validation, but recipient chose to manually handle it.

Failed

Invoice is failed due to an error.

FailedCorrected

Invoice is failed due to an error, but has been corrected by subsequent invoice from the same supplier and with the same invoice number.

Retrieved

Invoice is retrieved via an operator from a clearance service provider. Invoice is not processed or validated by the service and is only presented in read-only mode.

FailedRetrieved

Invoice is retrieved via an operator from a clearance service provider but failed due to either recipient’s misconfiguration or exceeding the receiving limit or other technical reason.

Deleted

Invoice is deleted.

InReporting

Invoice is sent for reporting.

FailedReporting

Failed to report. Member configuration required.

Reported

Reported.

Property log.items[].eventType supports the following values:

Event type Description

Created

Invoice was created.

Saved

Invoice was saved.

Sent

Invoice was sent.

SentSelfBilling

Self-billing invoice was sent.

SentToClearance

Invoice was submitted to the clearance operator.

SentToReporting

Invoice was submitted for e-reporting.

Received

Invoice was received by the recipient.

PendingReject

Invoice has failed validation but was not immediately rejected; the recipient has a chance to handle it manually.

Rejected

Invoice was rejected.

Unlocked

Invoice that previously exceeded the receiving limit is now available for processing.

Printed

Invoice was printed.

Deleted

Invoice was marked as deleted.

ReceivedResponse

A response was received for the invoice.

ReceivedResponseFromClearance

A response was received from the clearance operator.

ReceivedNegativeResponseFromClearance

Invoice was rejected during clearance.

ReceivedNegativeResponseFromReporting

Invoice was rejected during e-reporting.

ReceivedRejectionFromClearanceServiceProvider

Invoice was rejected by the clearance service provider due to content errors.

ReceivedRejectionFromClearanceOperator

Invoice was rejected by the clearance operator.

ReceivedFailedDeliveryNoticeFromClearanceOperator

Invoice was accepted by the clearance operator, but the operator failed to deliver it to the recipient.

FailedToProcessClearanceResponse

A response was received from the clearance operator but the attached legal document could not be processed.

SentResponse

A response was sent for the invoice.

Reprocessed

Invoice is being reprocessed after having been in a pending-reject state.

Replaced

Invoice was replaced by another, corrected invoice.

Retrieved

Invoice was retrieved from the clearance service provider.

FailedReporting

E-reporting failed.

ReceivedByRecipient

Invoice was reported as received by the receiving party.

QueriedByRecipient

Invoice was put on hold by the receiving party due to a query or pending clarification.

InvalidatedByRecipient

Invoice was identified as incorrect by the receiving party during business validation.

Verified

Invoice was verified and confirmed by the receiving party.

ConditionallyAcceptedByRecipient

Invoice was accepted by the receiving party with conditions or pending adjustments.

Approved

Invoice was approved by the receiving party.

PaidByRecipient

Invoice was fully paid by the receiving party.

RejectedByRecipient

Invoice was rejected by the receiving party.

FailedInboundValidation

Invoice failed inbound validation.

Reactivated

Invoice that was previously marked as deleted while in InClearance state was automatically reactivated after a clearance response was received, or was manually reactivated by a member admin.

SubmittedToClearanceOperator

Invoice was submitted to the clearance operator by the clearance platform.

IssuedByClearanceOperator

Invoice was issued by the clearance platform.

ReceivedByClearanceOperator

Invoice was received by the clearance platform.

MadeAvailableByClearanceOperator

Invoice was made available to the recipient by the clearance platform.

InProcessingByClearanceProvider

Clearance provider confirmed processing of the invoice.

AcknowledgedByRecipient

Invoice was acknowledged by the receiving party.

PartiallyApprovedByRecipient

Invoice was partially approved by the receiving party.

CompletedBySupplier

Invoice was marked as completed by the supplier.

PaymentCollectedBySupplier

Payment was collected by the supplier.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/submissions/1workmxidb883nxuq33at1odiw' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1008

{
  "id" : "1workmxidb883nxuq33at1odiw",
  "invoiceId" : 987654321,
  "log" : {
    "count" : 6,
    "items" : [ {
      "dateTime" : "2023-12-25T00:59:59.000+01:00",
      "eventType" : "FileReceived"
    }, {
      "dateTime" : "2023-12-25T00:59:59.100+01:00",
      "eventType" : "ImportStarted"
    }, {
      "dateTime" : "2023-12-25T00:59:59.130+01:00",
      "eventType" : "QueuedToFormatTransform"
    }, {
      "dateTime" : "2023-12-25T00:59:59.350+01:00",
      "eventType" : "FormatTransformed"
    }, {
      "dateTime" : "2023-12-25T01:00:00.250+01:00",
      "eventType" : "ForwardedToSendWorkflow"
    }, {
      "dateTime" : "2023-12-25T01:00:01.550+01:00",
      "eventType" : "ImportCompleted"
    } ]
  },
  "invoiceErrors" : [ ],
  "invoiceSendStatus" : "Sent",
  "invoiceSendStatusDescription" : "Invoice is successfully sent.",
  "invoiceReceiveStatus" : "Received",
  "invoiceReceiveStatusDescription" : "Invoice is successfully received by recipient."
}

Download original sent invoice files

Downloads all original files transmitted to the buyer on behalf of the sending member. Returns a single application/xml file in case there is only one file, or an application/zip archive bundling all files in case there are multiple files. Available only after the transmission pipeline has processed the outbound invoice.

GET /api/members/43/invoices/59/original-sent HTTP/1.1
Accept: */*

Path parameters

Table 41. /members/{memberId}/invoices/{invoiceId}/original-sent
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns application/xml with the transmitted file if there is only one file, or application/zip bundling all files if there are multiple files. Returns 204 No Content if no files have been linked yet (transmission pipeline has not run), or 404 Not Found if the invoice does not exist or the authenticated member is not the supplier.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/59/original-sent' -i -X GET \
    -H 'Accept: */*'

Example response

HTTP/1.1 200 OK
Content-Disposition: attachment;filename=invoice10.xml
Content-Type: application/xml
Content-Length: 70
Accept-Ranges: bytes

[ Body containing the invoice XML document or ZIP archive to download]
To avoid an error response, the Accept header for this request must include application/zip or */*.

Download original sent test invoice files

Test API endpoints currently support only Polish and French clearance flows.

Downloads all original files transmitted to the buyer on behalf of the sending member for a test invoice. Returns a single application/xml file in case there is only one file, or an application/zip archive bundling all files in case there are multiple files. This endpoint only returns files for invoices that were submitted via the test invoice submission API endpoint.

GET /api/members/43/test-invoices/59/original-sent HTTP/1.1
Accept: */*

Path parameters

Table 42. /members/{memberId}/test-invoices/{invoiceId}/original-sent
Parameter Description

memberId

Unique member ID.

invoiceId

Invoice unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Returns application/xml with the transmitted file if there is only one file, or application/zip bundling all files if there are multiple files. Returns 204 No Content if no files have been linked yet (transmission pipeline has not run), or 404 Not Found if the invoice does not exist, is not a test invoice, or the authenticated member is not the supplier.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/59/original-sent' -i -X GET \
    -H 'Accept: */*'

Example response

HTTP/1.1 200 OK
Content-Disposition: attachment;filename=invoice10.xml
Content-Type: application/xml
Content-Length: 70
Accept-Ranges: bytes

[ Body containing the invoice XML document or ZIP archive to download]
To avoid an error response, the Accept header for this request must include application/zip or */*.

Submit test invoice data for sending

Test API endpoints currently support only Polish and French clearance flows.

Creates a new test invoice to send on behalf of a member. Test invoices are processed through the test clearance workflow and are not included in regular invoice listings unless explicitly requested.

POST /api/members/43/test-invoices/submissions HTTP/1.1
Content-Type: application/xml
Accept: application/json
Content-Length: 44

[ Body containing the invoice XML document ]

Path parameters

Table 43. /members/{memberId}/test-invoices/submissions
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request headers

The Content-Type mandatory header defines the type of data the service expects to receive in the request body.

These content types are supported:

Content type Description

application/xml

The request body must contain a valid XML document.

The used XML format must follow the e-Invoice Connect defined XML schema ESXML2.

The document must contain one invoice.

Request body

The body must contain data which type matches the value of the Content-Type request header.

The invoice to submit must meet these requirements:

  • Invoice intended for delivery to a recipient must specify information to identify a recipient.

  • Invoice intended for e-reporting must have an invoice type that describes document subject for reporting.

  • Invoice must specify information to identify the sending member, the same one which ID is set to the memberId path parameter.

  • Invoice intended for delivery to a recipient must be valid against the validation rules of the recipient.

Response fields

Path Type Description

id

String

Invoice submission ID.

invoiceId

Number

Internal invoice ID once the invoice has been imported.

log

Object

Invoice processing history.

log.count

Number

Number of returned records in the history.

log.items[]

Array

History records.

log.items[].dateTime

String

Event date and time.

log.items[].eventType

String

Event type.

log.items[].errorType

String

Error type.

log.items[].errorText

String

Error text.

invoiceErrors

Array

Array of error strings describing the issues that occurred with the invoice upon processing, if any.

invoiceSendStatus

String

Sending status.

invoiceSendStatusDescription

String

Sending status description.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/submissions' -i -X POST \
    -H 'Content-Type: application/xml' \
    -H 'Accept: application/json' \
    -d '[ Body containing the invoice XML document ]'

Example response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 344

{
  "id" : "jbr4m4934igp9x3qaat9c1rmyc",
  "log" : {
    "count" : 1,
    "items" : [ {
      "dateTime" : "2023-12-25T00:59:59.000+01:00",
      "eventType" : "FileReceived"
    } ]
  },
  "invoiceErrors" : [ ],
  "invoiceSendStatus" : "InboundProcessing",
  "invoiceSendStatusDescription" : "Invoice document is being imported."
}

Get sent test invoice status

Test API endpoints currently support only Polish and French clearance flows.

Returns detailed information about a test invoice sent on behalf of a member.

GET /api/members/43/test-invoices/submissions/trbp4dkxdirubg5fd1f9d8ttqo HTTP/1.1
Accept: application/json

Path parameters

Table 44. /members/{memberId}/test-invoices/submissions/{invoiceSid}
Parameter Description

memberId

Unique member ID.

invoiceSid

Invoice submission ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

String

Invoice submission ID.

invoiceId

Number

Internal invoice ID once the invoice has been imported.

log

Object

Invoice processing history.

log.count

Number

Number of returned records in the history.

log.items[]

Array

History records.

log.items[].dateTime

String

Event date and time.

log.items[].eventType

String

Event type.

log.items[].errorType

String

Error type.

log.items[].errorText

String

Error text.

log.items[].responseInfo

Object

Supplemental data carried by the response behind this record. Absent when there is none.

log.items[].responseInfo.count

Number

Number of supplemental data fields.

log.items[].responseInfo.items[]

Array

Supplemental data fields.

log.items[].responseInfo.items[].code

String

Field code.

log.items[].responseInfo.items[].description

String

Field value, or its translated description where the code is known.

log.items[].responseInfoGroups

Object

Supplemental data whose fields belong together, for a repeating or nested structure. A sibling of responseInfo, not a replacement: the fields listed there are unaffected. Absent when the record carries no grouped data.

log.items[].responseInfoGroups.count

Number

Number of groups.

log.items[].responseInfoGroups.items[]

Array

Groups, in the order received. Repeated group codes are meaningful - two AMOUNT_LINE groups are two distinct amounts.

log.items[].responseInfoGroups.items[].code

String

Group type, for instance AMOUNT_LINE.

log.items[].responseInfoGroups.items[].responseInfo

Object

The group’s own fields, in the same shape as log.items[].responseInfo.

log.items[].responseInfoGroups.items[].responseInfoGroups

Object

Nested groups, in the same shape as log.items[].responseInfoGroups. Nesting goes at most two levels deep.

invoiceErrors

Array

Array of error strings describing the issues that occurred with the invoice upon processing, if any.

invoiceSendStatus

String

Sending status.

invoiceSendStatusDescription

String

Sending status description.

invoiceReceiveStatus

String

Receiving status.

invoiceReceiveStatusDescription

String

Receiving status description.

Property invoiceSendStatus supports the following values:

Status Description

InboundProcessing

Invoice is being imported.

Draft

Invoice is yet to be sent.

Queued

Invoice is queued for printing.

ExceedingLimit

Invoice cannot be sent because the sending limit is exceeded.

Sent

Invoice is successfully sent.

SentSelfBilling

Self-billing invoice is successfully sent.

SentToOperator

Invoice is forwarded to a receiving operator.

Failed

Invoice is failed due to an error.

Deleted

Invoice is deleted.

InClearance

Invoice is sent for clearance.

Cleared

Invoice is successfully cleared.

Submitted

Invoice was submitted to the clearance operator by the clearance platform.

IssuedByPlatform

Invoice was issued by the clearance platform.

ReceivedByPlatform

Invoice was received by the clearance platform.

MadeAvailableByPlatform

Invoice was made available to the recipient by the clearance platform.

InReporting

Invoice is sent for reporting.

FailedReporting

Failed to report. Member configuration required.

Reported

Reported.

Property invoiceReceiveStatus supports the following values:

Status Description

Received

Invoice is successfully received by recipient.

Forwarded

Invoice is successfully received and forwarded to recipient via a configured business integration.

ForwardedToOperator

Invoice is forwarded to a receiving operator upon arrival, and a copy is expected to come back to finally be received by recipient.

FailedPending

Invoice has failed validation, but recipient is given a chance to correct/accept instead of rejecting.

FailedPendingManual

Invoice has failed validation, but recipient chose to manually handle it.

Failed

Invoice is failed due to an error.

FailedCorrected

Invoice is failed due to an error, but has been corrected by subsequent invoice from the same supplier and with the same invoice number.

Retrieved

Invoice is retrieved via an operator from a clearance service provider. Invoice is not processed or validated by the service and is only presented in read-only mode.

FailedRetrieved

Invoice is retrieved via an operator from a clearance service provider but failed due to either recipient’s misconfiguration or exceeding the receiving limit or other technical reason.

Deleted

Invoice is deleted.

InReporting

Invoice is sent for reporting.

FailedReporting

Failed to report. Member configuration required.

Reported

Reported.

Property log.items[].eventType supports the following values:

Event type Description

Created

Invoice was created.

Saved

Invoice was saved.

Sent

Invoice was sent.

SentSelfBilling

Self-billing invoice was sent.

SentToClearance

Invoice was submitted to the clearance operator.

SentToReporting

Invoice was submitted for e-reporting.

Received

Invoice was received by the recipient.

PendingReject

Invoice has failed validation but was not immediately rejected; the recipient has a chance to handle it manually.

Rejected

Invoice was rejected.

Unlocked

Invoice that previously exceeded the receiving limit is now available for processing.

Printed

Invoice was printed.

Deleted

Invoice was marked as deleted.

ReceivedResponse

A response was received for the invoice.

ReceivedResponseFromClearance

A response was received from the clearance operator.

ReceivedNegativeResponseFromClearance

Invoice was rejected during clearance.

ReceivedNegativeResponseFromReporting

Invoice was rejected during e-reporting.

ReceivedRejectionFromClearanceServiceProvider

Invoice was rejected by the clearance service provider due to content errors.

ReceivedRejectionFromClearanceOperator

Invoice was rejected by the clearance operator.

ReceivedFailedDeliveryNoticeFromClearanceOperator

Invoice was accepted by the clearance operator, but the operator failed to deliver it to the recipient.

FailedToProcessClearanceResponse

A response was received from the clearance operator but the attached legal document could not be processed.

SentResponse

A response was sent for the invoice.

Reprocessed

Invoice is being reprocessed after having been in a pending-reject state.

Replaced

Invoice was replaced by another, corrected invoice.

Retrieved

Invoice was retrieved from the clearance service provider.

FailedReporting

E-reporting failed.

ReceivedByRecipient

Invoice was reported as received by the receiving party.

QueriedByRecipient

Invoice was put on hold by the receiving party due to a query or pending clarification.

InvalidatedByRecipient

Invoice was identified as incorrect by the receiving party during business validation.

Verified

Invoice was verified and confirmed by the receiving party.

ConditionallyAcceptedByRecipient

Invoice was accepted by the receiving party with conditions or pending adjustments.

Approved

Invoice was approved by the receiving party.

PaidByRecipient

Invoice was fully paid by the receiving party.

RejectedByRecipient

Invoice was rejected by the receiving party.

FailedInboundValidation

Invoice failed inbound validation.

Reactivated

Invoice that was previously marked as deleted while in InClearance state was automatically reactivated after a clearance response was received, or was manually reactivated by a member admin.

SubmittedToClearanceOperator

Invoice was submitted to the clearance operator by the clearance platform.

IssuedByClearanceOperator

Invoice was issued by the clearance platform.

ReceivedByClearanceOperator

Invoice was received by the clearance platform.

MadeAvailableByClearanceOperator

Invoice was made available to the recipient by the clearance platform.

InProcessingByClearanceProvider

Clearance provider confirmed processing of the invoice.

AcknowledgedByRecipient

Invoice was acknowledged by the receiving party.

PartiallyApprovedByRecipient

Invoice was partially approved by the receiving party.

CompletedBySupplier

Invoice was marked as completed by the supplier.

PaymentCollectedBySupplier

Payment was collected by the supplier.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/submissions/trbp4dkxdirubg5fd1f9d8ttqo' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 980

{
  "id" : "trbp4dkxdirubg5fd1f9d8ttqo",
  "log" : {
    "count" : 6,
    "items" : [ {
      "dateTime" : "2023-12-25T00:59:59.000+01:00",
      "eventType" : "FileReceived"
    }, {
      "dateTime" : "2023-12-25T00:59:59.100+01:00",
      "eventType" : "ImportStarted"
    }, {
      "dateTime" : "2023-12-25T00:59:59.130+01:00",
      "eventType" : "QueuedToFormatTransform"
    }, {
      "dateTime" : "2023-12-25T00:59:59.350+01:00",
      "eventType" : "FormatTransformed"
    }, {
      "dateTime" : "2023-12-25T01:00:00.250+01:00",
      "eventType" : "ForwardedToSendWorkflow"
    }, {
      "dateTime" : "2023-12-25T01:00:01.550+01:00",
      "eventType" : "ImportCompleted"
    } ]
  },
  "invoiceErrors" : [ ],
  "invoiceSendStatus" : "Sent",
  "invoiceSendStatusDescription" : "Invoice is successfully sent.",
  "invoiceReceiveStatus" : "Received",
  "invoiceReceiveStatusDescription" : "Invoice is successfully received by recipient."
}

Invoice notifications endpoint

A member wide, time ordered feed of everything that happened to the invoices a member is a party to, both the ones it sent and the ones it received. It replaces polling each invoice individually with a single call that answers "what changed since I last checked?".

The endpoint exists in two variants: invoices serves production events and test-invoices serves pre-production ones. Each is documented in full below. There is no query parameter for the environment, and the two feeds never mix.

Get member invoice notifications

Reads the production notifications feed of a member.

GET /api/members/43/invoices/notifications?q=%7B%22eventType%22%3A%22invoice_status%22%2C%22count%22%3A500%7D HTTP/1.1
Accept: application/json

Prerequisites

Three properties of the feed are not obvious, and each of them will bite a client that assumes otherwise.

Storage is opt-in per member

Nothing is recorded until the member enables notifications, either through the notificationsEnabled property of the member resource or through the corresponding setting in the portal. Enabling the setting starts the feed from that moment. Nothing exists for anything that happened before, and there is no way to ask for it.

Retention is 30 days, per notification

Each notification is kept for 30 days from the moment e-Invoice Connect recorded it (its createdAt). Notifications for one invoice therefore expire individually rather than as a set

Path parameters

Table 45. /members/{memberId}/invoices/notifications
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Description

q

Optional extended query filter. Supported keys: since, count, eventType, event, role, submissionId, invoiceNo.

All filtering and paging travels in the single q query parameter, as a URL encoded JSON object. There are no other query parameters.

Table 46. Keys accepted in q
Key Type Default Description

since

ISO 8601 timestamp

none

Inclusive lower bound on createdAt, i.e. on when e-Invoice Connect recorded the event, never on occurredAt. Pass back the recordedTo of the previous response. Optional; omitting it reads the feed from the beginning of the retention window. A value in the future is rejected, and there is no tolerance for clock skew.

count

Integer

100

Page size, maximum 1000. Approximate: a page is never split in the middle of a group of notifications that share one createdAt, so a page may be shorter or longer than requested.

eventType

Enum, multi-valued

everything except system_log

One or more of invoice_status, clearance, transport, reporting, status_update, system_log. Note the default: internal processing detail is only returned if you ask for it by name.

event

String, multi-valued

none

One or more payload.event values. Validated against the selected eventType values: asking for an event that none of them can carry is rejected rather than silently returning nothing. To filter on a system_log event you must therefore also select eventType system_log.

role

Enum

both

sender or recipient, the member’s role on the invoice the notification is about.

submissionId

String, multi-valued

none

One or more submission ids, the same value as invoiceSid in GET /members/{memberId}/invoices/submissions/{invoiceSid}. At most 100 per request.

invoiceNo

String

none

Exact match on the sender’s invoice number.

The multi-valued keys accept four equivalent forms, so the shortest one that suits the client can be used:

?q={"eventType":"clearance"}
?q={"eventType":"invoice_status,clearance"}
?q={"eventType":["invoice_status","clearance"]}
?q={"eventType":{"$in":["invoice_status","clearance"]}}

Enum values are snake_case (invoice_status, status_update, system_log) while JSON keys are camelCase. Timestamps are ISO 8601 with milliseconds and a real UTC offset, for example 2026-08-05T14:02:18.905+02:00; they are not normalised to Z.

Request fields

No request body.

Response fields

The feed does not use the paged collection structure. It is an append only stream, so page, pages and total have no meaning for it and are not returned.

Table 47. Response structure
Path Type Description

notifications

Array

The notifications of this page, oldest first.

count

Integer

The number of notifications in this page. It is the page size, not the size of the backlog.

hasMore

Boolean

Whether more notifications are already waiting behind this page. true means another call can be made immediately; false means the feed has been read up to recordedTo.

recordedTo

String

The cursor. Pass it back as since on the next call. Absent only when the feed is empty and no since was supplied, in which case there is nothing to resume from.

Table 48. Fields of one notification
Path Type Description

id

String

The stable identifier of the notification, and the deduplication key. It is derived from the source event, so reading the same event twice always yields the same id.

invoiceId

String

The numeric invoice id as a string. Absent for a system_log notification recorded before an invoice existed.

invoiceNo

String

The sender’s invoice number. Absent when invoiceId is.

submissionId

String

The submission the event belongs to.

eventType

String

The category: invoice_status, clearance, transport, reporting, status_update or system_log.

fromState

String

The state before the event, from the same value set as toState. Absent for system_log and for the first event on an axis.

toState

String

The state after the event.

role

String

sender or recipient, the member’s role on this invoice.

occurredAt

String

Business time, when the event happened. Sources with second precision report .000. It may arrive out of order, so it must never be used for paging.

createdAt

String

When e-Invoice Connect recorded the event. This is what since and recordedTo refer to.

payload

Object

Category specific detail. Fields that do not apply to a category are omitted.

payload.event

String

The precise action, for example Sent, ReceivedByRecipient or ImportFailed.

payload.stateDescription

String

Human readable text for toState. Only for transport, clearance and reporting.

payload.errorType

String

system_log only. The error classification, or Unknown for the error kinds that have no published name, exactly as GET /members/{memberId}/invoices/submissions/{invoiceSid} reports them.

payload.originalFileName

String

system_log only. The name of the submitted file.

payload.trackingId

String

status_update only. The identifier of the status update document.

payload.invoiceStatus

String

status_update only. The business status the document conveys.

payload.statusReason

String

status_update only. The failure reason; absent on success.

payload.responseInfo

Object

A count and items collection of code and description pairs carried by a response message. Not present for system_log.

payload.errors

Object

A count and items collection of code and description pairs. system_log only.

Reading the feed continuously

The feed is paged by cursor, not by page number:

  1. Call the endpoint, with since omitted the first time.

  2. Process notifications.

  3. Remember recordedTo.

  4. If hasMore is true, call again immediately with since set to recordedTo; otherwise wait and poll later with the same value.

recordedTo is the createdAt of the last notification delivered, and since is inclusive. The consequence is deliberate and must be handled: the last group of notifications sharing one createdAt is delivered again on the next call. That is what guarantees no event can fall between two pages. Discard the repeats by id, which is stable for exactly this purpose. A client polling an idle feed therefore keeps receiving the same trailing group until something new arrives.

A group of notifications sharing one createdAt is always delivered whole, so a page can come back larger than the requested count when a group does not fit in what is left of the page. This is what keeps the cursor moving: however large the groups are, each call advances by at least one of them.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/invoices/notifications?q=%7B%22eventType%22%3A%22invoice_status%22%2C%22count%22%3A500%7D' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 413

{
  "notifications" : [ {
    "id" : "11111111-2222-3333-4444-555555555555",
    "eventType" : "transport",
    "toState" : "Sent",
    "role" : "sender",
    "occurredAt" : "2026-08-05T14:02:18.905+02:00",
    "createdAt" : "2026-08-05T14:02:18.905+02:00",
    "payload" : {
      "event" : "Sent"
    }
  } ],
  "count" : 1,
  "hasMore" : false,
  "recordedTo" : "2026-08-05T14:02:18.905+02:00"
}

Errors

Table 49. Rejections specific to this endpoint
Status Cause

400 Bad Request

since is older than the 30 day retention window. This is the only semantic rejection that answers 400, and it is deliberate: the events being asked for no longer exist, so the feed cannot be served without a gap. Treat it as the signal to reconcile from the invoice endpoints and resume with a newer cursor. A q that is not valid JSON is also a 400, as it is everywhere else in this API.

403 Forbidden

The member has not enabled notifications.

422 Unprocessable Entity

Any other problem with q: an unknown key, an unknown enum value, a count outside the range 1 to 1000, more than 100 submission ids, a since in the future, or an event that none of the selected eventType values can carry.

Get member test invoice notifications

Reads the pre-production (test) notifications feed of a member. It reports events of test flow submissions only, and never returns a production event.

GET /api/members/43/test-invoices/notifications?q=%7B%22eventType%22%3A%22invoice_status%22%2C%22count%22%3A500%7D HTTP/1.1
Accept: application/json

Besides the environment it serves, this endpoint behaves exactly as Get member invoice notifications. It additionally admits integrations that hold only the test role, which must reach this feed and must not reach the production one.

Prerequisites

Three properties of the feed are not obvious, and each of them will bite a client that assumes otherwise.

Storage is opt-in per member

Nothing is recorded until the member enables notifications, either through the notificationsEnabled property of the member resource or through the corresponding setting in the portal. Enabling the setting starts the feed from that moment. Nothing exists for anything that happened before, and there is no way to ask for it.

Retention is 30 days, per notification

Each notification is kept for 30 days from the moment e-Invoice Connect recorded it (its createdAt). Notifications for one invoice therefore expire individually rather than as a set

Path parameters

Table 50. /members/{memberId}/test-invoices/notifications
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Description

q

Optional extended query filter. Supported keys: since, count, eventType, event, role, submissionId, invoiceNo.

All filtering and paging travels in the single q query parameter, as a URL encoded JSON object. There are no other query parameters.

Table 51. Keys accepted in q
Key Type Default Description

since

ISO 8601 timestamp

none

Inclusive lower bound on createdAt, i.e. on when e-Invoice Connect recorded the event, never on occurredAt. Pass back the recordedTo of the previous response. Optional; omitting it reads the feed from the beginning of the retention window. A value in the future is rejected, and there is no tolerance for clock skew.

count

Integer

100

Page size, maximum 1000. Approximate: a page is never split in the middle of a group of notifications that share one createdAt, so a page may be shorter or longer than requested.

eventType

Enum, multi-valued

everything except system_log

One or more of invoice_status, clearance, transport, reporting, status_update, system_log. Note the default: internal processing detail is only returned if you ask for it by name.

event

String, multi-valued

none

One or more payload.event values. Validated against the selected eventType values: asking for an event that none of them can carry is rejected rather than silently returning nothing. To filter on a system_log event you must therefore also select eventType system_log.

role

Enum

both

sender or recipient, the member’s role on the invoice the notification is about.

submissionId

String, multi-valued

none

One or more submission ids, the same value as invoiceSid in GET /members/{memberId}/test-invoices/submissions/{invoiceSid}. At most 100 per request.

invoiceNo

String

none

Exact match on the sender’s invoice number.

The multi-valued keys accept four equivalent forms, so the shortest one that suits the client can be used:

?q={"eventType":"clearance"}
?q={"eventType":"invoice_status,clearance"}
?q={"eventType":["invoice_status","clearance"]}
?q={"eventType":{"$in":["invoice_status","clearance"]}}

Enum values are snake_case (invoice_status, status_update, system_log) while JSON keys are camelCase. Timestamps are ISO 8601 with milliseconds and a real UTC offset, for example 2026-08-05T14:02:18.905+02:00; they are not normalised to Z.

Request fields

No request body.

Response fields

The feed does not use the paged collection structure. It is an append only stream, so page, pages and total have no meaning for it and are not returned.

Table 52. Response structure
Path Type Description

notifications

Array

The notifications of this page, oldest first.

count

Integer

The number of notifications in this page. It is the page size, not the size of the backlog.

hasMore

Boolean

Whether more notifications are already waiting behind this page. true means another call can be made immediately; false means the feed has been read up to recordedTo.

recordedTo

String

The cursor. Pass it back as since on the next call. Absent only when the feed is empty and no since was supplied, in which case there is nothing to resume from.

Table 53. Fields of one notification
Path Type Description

id

String

The stable identifier of the notification, and the deduplication key. It is derived from the source event, so reading the same event twice always yields the same id.

invoiceId

String

The numeric invoice id as a string. Absent for a system_log notification recorded before an invoice existed.

invoiceNo

String

The sender’s invoice number. Absent when invoiceId is.

submissionId

String

The submission the event belongs to.

eventType

String

The category: invoice_status, clearance, transport, reporting, status_update or system_log.

fromState

String

The state before the event, from the same value set as toState. Absent for system_log and for the first event on an axis.

toState

String

The state after the event.

role

String

sender or recipient, the member’s role on this invoice.

occurredAt

String

Business time, when the event happened. Sources with second precision report .000. It may arrive out of order, so it must never be used for paging.

createdAt

String

When e-Invoice Connect recorded the event. This is what since and recordedTo refer to.

payload

Object

Category specific detail. Fields that do not apply to a category are omitted.

payload.event

String

The precise action, for example Sent, ReceivedByRecipient or ImportFailed.

payload.stateDescription

String

Human readable text for toState. Only for transport, clearance and reporting.

payload.errorType

String

system_log only. The error classification, or Unknown for the error kinds that have no published name, exactly as GET /members/{memberId}/test-invoices/submissions/{invoiceSid} reports them.

payload.originalFileName

String

system_log only. The name of the submitted file.

payload.trackingId

String

status_update only. The identifier of the status update document.

payload.invoiceStatus

String

status_update only. The business status the document conveys.

payload.statusReason

String

status_update only. The failure reason; absent on success.

payload.responseInfo

Object

A count and items collection of code and description pairs carried by a response message. Not present for system_log.

payload.errors

Object

A count and items collection of code and description pairs. system_log only.

Reading the feed continuously

The feed is paged by cursor, not by page number:

  1. Call the endpoint, with since omitted the first time.

  2. Process notifications.

  3. Remember recordedTo.

  4. If hasMore is true, call again immediately with since set to recordedTo; otherwise wait and poll later with the same value.

recordedTo is the createdAt of the last notification delivered, and since is inclusive. The consequence is deliberate and must be handled: the last group of notifications sharing one createdAt is delivered again on the next call. That is what guarantees no event can fall between two pages. Discard the repeats by id, which is stable for exactly this purpose. A client polling an idle feed therefore keeps receiving the same trailing group until something new arrives.

A group of notifications sharing one createdAt is always delivered whole, so a page can come back larger than the requested count when a group does not fit in what is left of the page. This is what keeps the cursor moving: however large the groups are, each call advances by at least one of them.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/test-invoices/notifications?q=%7B%22eventType%22%3A%22invoice_status%22%2C%22count%22%3A500%7D' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 413

{
  "notifications" : [ {
    "id" : "11111111-2222-3333-4444-555555555555",
    "eventType" : "transport",
    "toState" : "Sent",
    "role" : "sender",
    "occurredAt" : "2026-08-05T14:02:18.905+02:00",
    "createdAt" : "2026-08-05T14:02:18.905+02:00",
    "payload" : {
      "event" : "Sent"
    }
  } ],
  "count" : 1,
  "hasMore" : false,
  "recordedTo" : "2026-08-05T14:02:18.905+02:00"
}

Errors

Table 54. Rejections specific to this endpoint
Status Cause

400 Bad Request

since is older than the 30 day retention window. This is the only semantic rejection that answers 400, and it is deliberate: the events being asked for no longer exist, so the feed cannot be served without a gap. Treat it as the signal to reconcile from the invoice endpoints and resume with a newer cursor. A q that is not valid JSON is also a 400, as it is everywhere else in this API.

403 Forbidden

The member has not enabled notifications.

422 Unprocessable Entity

Any other problem with q: an unknown key, an unknown enum value, a count outside the range 1 to 1000, more than 100 submission ids, a since in the future, or an event that none of the selected eventType values can carry.

Recipients endpoint

This endpoint returns a collection of invoice recipients that can be used as the submitted invoice receivers.

Searching recipients for invoice

Searches for invoice recipients.

GET /api/recipients?name=recipient-name&country=SE&city=Stockholm&id=123456-6789&registry=1 HTTP/1.1

Path parameters

No parameters.

Query parameters

Parameter Type Description

name

String

Recipient name to search for. Only recipients with the exactly matching name (ignoring the case) will be returned if the city parameter is not specified for the request. If the city parameter is specified then the wildcard symbols can be used in the name parameter.

Either name or id parameter must be specified to make the request succeed. If the request specifies id then the name parameter is ignored.

country

String

Recipient country. The two-letter country code as defined by ISO 3166-1. It may be used as an additional recipient filter when the name parameter is specified.

Ignored if name is not specified.

city

String

Recipient city. It may be used as an additional recipient filter when the name parameter is specified.

The name parameter may have the wildcard when the city parameter is specified to search for recipients by partial name.

Ignored if name is not specified.

id

String

Party identifier of the recipient.

Either name or id parameter must be specified to make the request succeed. If the request specifies id then the name parameter is ignored.

registry

Boolean

Flag indicating that API should search for recipients in the e-Invoice Connect registry.

If neither registry nor 'peppol' parameter is specified then only e-Invoice Connect registry is searched.

If both registry and peppol parameters are specified then the Peppol registry is searched only if nothing is found in the e-Invoice Connect registry.

peppol

Boolean

Flag indicating that API should search for recipient in the Peppol registry.

If both registry and peppol parameters are specified then the Peppol registry is searched only if nothing is found in the e-Invoice Connect registry.

nemhandel

Boolean

Flag indicating that API should search for recipients in the NemHandel receiver list.

When nemhandel=true, the e-Invoice Connect registry is skipped unless registry=true is also specified.

If id is provided, the search matches identifiers across all identifier types (DK:CVR, DK:SE, GLN, DK:P). If only name is provided, a case-insensitive partial match on participant name is performed.

Request fields

No request body.

Response fields

Path Type Description

items

Array

Array of recipient objects.

count

Number

Number of returned recipients.

items[].partyIdentifiers

Object

An object that contains a collection of recipient’s party identifiers.

items[].partyIdentifiers.count

Number

Number of recipient’s party identifiers in the collection.

items[].partyIdentifiers.items

Array

Collection of recipient’s party identifiers

items[].partyIdentifiers.items[].countryId

String

Country ID.

items[].partyIdentifiers.items[].type

String

Identifier type.

items[].partyIdentifiers.items[].identifier

String

Identifier value.

items[].legalName

String

Recipient legal name.

items[].recipientName

String

Recipient address name.

items[].countryId

String

Country ID.

items[].countrySubentity

String

Country subentity.

items[].zipCode

String

Zip code.

items[].city

String

City.

items[].streetAddress

String

Street address.

items[].partyReference

String

Address party reference.

items[].addressLine

String

Address line.

items[].addressPartyIdentifier

Object

Address party identifier.

items[].addressPartyIdentifier.countryId

String

Country ID.

items[].addressPartyIdentifier.type

String

Identifier type.

items[].addressPartyIdentifier.identifier

String

Address party identifier value.

Example request

$ curl 'https://web.invoiceportal.net/api/recipients?name=recipient-name&country=SE&city=Stockholm&id=123456-6789&registry=1' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 364

{
  "count" : 1,
  "items" : [ {
    "partyIdentifiers" : {
      "count" : 1,
      "items" : [ {
        "countryId" : "SE",
        "type" : "SE:ORGNR",
        "identifier" : "123456-6789"
      } ]
    },
    "legalName" : "Construction Ltd.",
    "recipientName" : "Construction Ltd.",
    "countryId" : "SE",
    "city" : "Stockholm"
  } ]
}

Invoice Statistics

Use this API to obtain a report on member sending/receiving activity through the invoice sending/receiving API. Report generation is very time-consuming, therefore we designed this process to be asynchronous.

With this API you can:

  • Submit a report request and provide the filtering criteria.

  • Monitor the status of the request and obtain the requested invoice statistics report when it is completed.

Invoice statistics endpoint

This endpoint is a collection resource to request the invoice statistics and obtain the invoice statistics result.

Request API invoice statistics report

Use this API to request the API invoice statistics report. It returns the request ID and status.

POST /api/reports/invoicestats?country=SE&memberId=1&dateFrom=01-11-24&dateTo=30-11-24 HTTP/1.1
Content-Type: application/x-www-form-urlencoded

country=SE&memberId=1&dateFrom=01-11-24&dateTo=30-11-24

Path parameters

No parameters.

Query parameters

Parameter Type Description

country

String

Country code to filter in the member for invoice statistics.

memberId

Number

Unique member ID.

dateFrom

String

First day of the date range to include statistics for.

dateTo

String

Last day of the date range to include statistics for.

Request fields

No request body.

Response fields

Path Type Description

requestId

String

Request ID to monitor the request status and get statistic report

requestStatus

String

Request status.

Example request

$ curl 'https://web.invoiceportal.net/api/reports/invoicestats?country=SE&memberId=1&dateFrom=01-11-24&dateTo=30-11-24' -i -X POST

Example response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 66

{
  "requestId" : "request-id",
  "requestStatus" : "Pending"
}

Get API invoice statistics result

Use this API to get the API invoice statistics report. It returns the status and the API invoice statistics report if status is Completed.

GET /api/reports/invoicestats/request-id HTTP/1.1

Path parameters

Table 55. /reports/invoicestats/{requestId}
Parameter Description

requestId

Unique request ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

requestId

String

Request ID to monitor the request status and get statistic report

requestStatus

String

Request status.

statistic

Object

Invoice statistics report.

statistic.count

Number

Number of returned records in the statistics report.

statistic.items[]

Array

Invoice statistics report records.

statistic.items[].memberId

Number

Member ID.

statistic.items[].numberOfSubmittedInvoices

Number

Number of invoices submitted by member via API.

statistic.items[].numberOfDownloadedInvoices

Number

Number of invoices downloaded by member via API.

Example request

$ curl 'https://web.invoiceportal.net/api/reports/invoicestats/request-id' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 360

{
  "requestId" : "request-id",
  "requestStatus" : "Completed",
  "statistic" : {
    "count" : 2,
    "items" : [ {
      "memberId" : 43,
      "numberOfSubmittedInvoices" : 22,
      "numberOfDownloadedInvoices" : 0
    }, {
      "memberId" : 44,
      "numberOfSubmittedInvoices" : 10,
      "numberOfDownloadedInvoices" : 30
    } ]
  }
}

Vendor Onboarding

API that serves the functionality of

  • Signaling to integrated service that supplier data is needed for a specific member

  • Uploading supplier data into e-Invoice Connect for that member

With this, integrated service can poll the signaling endpoint to know a data upload is requested and then upload the data per request.

Integrated service request endpoint

e-Invoice Connect uses it to publish a request to external integrated service that polls this endpoint to discover new pending entries.

List service requests

GET /api/requests HTTP/1.1

Path parameters

No parameters.

Query parameters

Parameter Type Description

q

Object

Optional extended query for integrated service request lookup. The parameters that can be specified for the lookup are:

1. status - request status

2. type - request type (only MemberSuppliersUpload supported)

3. member.id - member ID

4. user.id - user ID

Supports standard paging query parameters.

Request fields

No request body.

Response fields

Path Type Description

page

Number

Page number.

count

Number

Actual size of content array (number of items).

total

Number

Total number of existing items.

pages

Number

Total number of pages with current page size.

items

Array

Array of requests.

items[].id

Number

Request ID, a unique positive integer.

items[].type

String

Request type: MemberSuppliersUpload.

items[].status

String

Request status.

items[].member.id

Number

Request parameterization with info about a member.

items[].user.id

Number

Request parameterization with info about a user.

items[].upload.id

Number

Processing job ID created to process uploaded data.

items[].upload.status

String

Processing job status.

items[].createdAt

String

Request creation date/time.

items[].changedAt

String

Last modification date/time.

Example request

$ curl 'https://web.invoiceportal.net/api/requests' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 771

{
  "page" : 1,
  "count" : 2,
  "total" : 2,
  "pages" : 1,
  "items" : [ {
    "id" : 43,
    "type" : "MemberSuppliersUpload",
    "status" : "Active",
    "member" : {
      "id" : 129
    },
    "user" : {
      "id" : 132
    },
    "upload" : {
      "id" : 135,
      "status" : "Accepted"
    },
    "createdAt" : "2026-08-17T14:56:25+02:00",
    "changedAt" : "2026-08-17T14:56:25+02:00"
  }, {
    "id" : 44,
    "type" : "MemberSuppliersUpload",
    "status" : "Active",
    "member" : {
      "id" : 132
    },
    "user" : {
      "id" : 135
    },
    "upload" : {
      "id" : 138,
      "status" : "Accepted"
    },
    "createdAt" : "2026-08-17T14:56:25+02:00",
    "changedAt" : "2026-08-17T14:56:25+02:00"
  } ]
}

Member supplier upload endpoint

This endpoint is a collection resource that manages uploads.

Create a new upload

The integrated service uses the endpoint to upload member information about its suppliers in response to the specific service request. e-Invoice Connect handles upload request asynchronously creating a job object that could be polled using suppliers upload endpoint.

POST /api/members/43/suppliers/uploads HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1346

{
  "request" : 966,
  "multipart" : false,
  "parties" : {
    "count" : 1,
    "items" : [ {
      "address" : {
        "zipCode" : "99943",
        "coAddress" : "coAddress 43",
        "countrySubentity" : "Country subentity 43",
        "city" : "City 43",
        "streetAddress" : "Street 43",
        "name" : "Test Member 43",
        "addressLine" : "Address line 43",
        "partysReference" : "Party reference 43",
        "countryId" : "SE"
      },
      "sendBWPDF" : false,
      "identifiers" : [ {
        "identifier" : "453399-4408",
        "detailedType" : "SE:ORGNR",
        "type" : "SE:ORGNR",
        "countryId" : "SE"
      } ],
      "businessSystem" : "SAP",
      "locale" : "sv",
      "actionComment" : "memberFull",
      "paymentMeans" : [ {
        "swiftCode" : "ESSESEGCXXX",
        "bankName" : "Nordea",
        "clearingNo" : "4892",
        "type" : "Bank",
        "account" : "7368391178"
      } ],
      "noInvitation" : false,
      "contact" : {
        "emailAddress" : "me@example.com",
        "phone" : "1234567890",
        "contactName" : "John Doe"
      },
      "invoicesPerYear" : 2500,
      "comment" : "1-Full",
      "deadline" : "2021-05-05",
      "membersIdForParty" : "1-Full 43",
      "actionDate" : "2021-05-22"
    } ]
  }
}

Path parameters

Table 56. /members/{memberId}/suppliers/uploads
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

Path Type Description

request

Number

Optional field containing Integrated service request ID.

multipart

Boolean

Optional flag that indicates whether party data is sent in multiple parts.

parties

Object

Object that contains member parties.

parties.count

Number

Actual size of parties array (number of items).

parties.items[]

Array

Collection of member party objects.

parties.items[].address

Object

Object that contains address.

parties.items[].address.zipCode

String

Zip code.

parties.items[].address.coAddress

String

Co-address.

parties.items[].address.countrySubentity

String

Country subentity.

parties.items[].address.city

String

City.

parties.items[].address.streetAddress

String

Street address.

parties.items[].address.name

String

Address name.

parties.items[].address.addressLine

String

Address line.

parties.items[].address.partysReference

String

Party’s reference.

parties.items[].address.countryId

String

Address country ID.

parties.items[].sendBWPDF

Boolean

Flag that indicates that this customer will receive invoice PDF in B&W.

parties.items[].identifiers

Array

Object that contains a collection of party identifiers.

parties.items[].identifiers[].identifier

String

Party identifier.

parties.items[].identifiers[].countryId

String

Party identifier country.

parties.items[].identifiers[].type

String

Party identifier type.

parties.items[].identifiers[].detailedType

String

Party identifier detailed type.

parties.items[].identifiers[].countryId

String

Party identifier country ID.

parties.items[].businessSystem

String

Information about supplier´s current business system.

parties.items[].locale

String

Party record locale for invitation. 2 capital letter ISO 639-1 code.

parties.items[].actionComment

String

Comment on next step of action to be taken on the supplier.

parties.items[].paymentMeans

Array

Object that contains a collection of payment means.

parties.items[].paymentMeans[].swiftCode

String

Bank Identifier Code (same as SWIFT-address). For Sweden 8 capital letters.

parties.items[].paymentMeans[].bankName

String

The name of the financial institution responsible for the account.

parties.items[].paymentMeans[].clearingNo

String

4-digit bank identification number.

parties.items[].paymentMeans[].type

String

Payment means type: Bank, IBAN, DanishGiro, DanishJointPaymentForm, SwedishBankGiro, SwedishPlusGiro.

parties.items[].paymentMeans[].account

String

Bank account .

parties.items[].noInvitation

Boolean

Flag that indicates whether it is possible to send invitations to this party.

parties.items[].contact

Object

Object that contains contact information.

parties.items[].contact.emailAddress

String

Contact e-mail address.

parties.items[].contact.phone

String

Contact phone number.

parties.items[].contact.contactName

String

Contact name.

parties.items[].invoicesPerYear

String

Number of invoices sent per year.

parties.items[].comment

String

Comment text.

parties.items[].deadline

String

Deadline for sending paper invoices.

parties.items[].membersIdForParty

String

The record’s ID that can be used to match records from multiple uploads.

parties.items[].actionDate

String

Date when the next action should be taken on the supplier.

Response fields

Path Type Description

id

Number

Party upload unique ID.

status

String

Upload job status.

multipart

Boolean

Flag indicating whether party data is sent in multiple parts.

createdAt

Number

Upload creation date/time.

changedAt

String

Last modification date/time.

request.id

String

Integrated service request ID. This value is returned only when an end-user initiates the upload in TeC UI, after which e‑Invoice Connect publishes a request to the external integrated service.

parts

Object

Object that contains a collection of upload parts.

parts.count

Number

Number of upload parts in the collection.

parts.items

Array

Array of upload parts.

parts.items[].id

Number

Upload part unique ID.

parts.items[].createdAt

String

Date and time of the upload part creation.

parts.items[].last

Boolean

Flag that indicates whether the upload part finishes the multipart upload.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/suppliers/uploads' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "request" : 966,
  "multipart" : false,
  "parties" : {
    "count" : 1,
    "items" : [ {
      "address" : {
        "zipCode" : "99943",
        "coAddress" : "coAddress 43",
        "countrySubentity" : "Country subentity 43",
        "city" : "City 43",
        "streetAddress" : "Street 43",
        "name" : "Test Member 43",
        "addressLine" : "Address line 43",
        "partysReference" : "Party reference 43",
        "countryId" : "SE"
      },
      "sendBWPDF" : false,
      "identifiers" : [ {
        "identifier" : "453399-4408",
        "detailedType" : "SE:ORGNR",
        "type" : "SE:ORGNR",
        "countryId" : "SE"
      } ],
      "businessSystem" : "SAP",
      "locale" : "sv",
      "actionComment" : "memberFull",
      "paymentMeans" : [ {
        "swiftCode" : "ESSESEGCXXX",
        "bankName" : "Nordea",
        "clearingNo" : "4892",
        "type" : "Bank",
        "account" : "7368391178"
      } ],
      "noInvitation" : false,
      "contact" : {
        "emailAddress" : "me@example.com",
        "phone" : "1234567890",
        "contactName" : "John Doe"
      },
      "invoicesPerYear" : 2500,
      "comment" : "1-Full",
      "deadline" : "2021-05-05",
      "membersIdForParty" : "1-Full 43",
      "actionDate" : "2021-05-22"
    } ]
  }
}'

Example response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 357

{
  "id" : 135,
  "multipart" : false,
  "status" : "Accepted",
  "createdAt" : "2026-08-17T14:58:39+02:00",
  "changedAt" : "2026-08-17T14:58:39+02:00",
  "parts" : {
    "count" : 1,
    "items" : [ {
      "id" : 1001,
      "createdAt" : "2026-08-17T14:58:39+02:00",
      "last" : true
    } ]
  },
  "request" : {
    "id" : 966
  }
}

Create a multipart upload

If the volume of information about suppliers is large it is recommended splitting and sending it in multiple parts.

The multipart property in the upload request body set to true enables the mode where data can be uploaded in more than one part. In this mode the upload is created and remains with the Awaiting status until all multipart data has arrived. If all parts come valid and in a timely manner, the upload changes its status to Accepted. Other scenarios can result in that the upload ends up with the Failed or Expired statuses.

In either of the upload modes the information about suppliers that comes with the upload creation request becomes the first part of the upload. In the multipart upload mode sending more parts is allowed and the additional parts are sent using the endpoint for multipart uploading.

Example request

POST /api/members/43/suppliers/uploads HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 3375643

{
  "request" : 5787,
  "multipart" : true,
  "parties" : {
    "count" : 10000,
    "items" : [
      ...
    ]
  }
}

Example response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 398

{
  "id" : 239,
  "multipart" : true,
  "status" : "Awaiting",
  "createdAt" : "2024-04-26T18:00:55+02:00",
  "changedAt" : "2024-04-26T18:00:55+02:00",
  "parts" : {
    "count" : 1,
    "items" : [ {
      "id" : 4200211,
      "createdAt" : "2024-04-26T18:00:55+02:00",
      "last" : false
    } ]
  },
  "request" : {
    "id" : 5787
  }
}

Get upload details

Returns supplier upload details.

The endpoint may be polled to track the status of processing the uploaded data until completed or failed.

GET /api/members/43/suppliers/uploads/135 HTTP/1.1

Path parameters

Table 57. /members/{memberId}/suppliers/uploads/{uploadId}
Parameter Description

memberId

Unique member ID.

uploadId

Unique party upload ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Party upload unique ID.

status

String

Upload job status.

multipart

Boolean

Flag indicating whether party data is sent in multiple parts.

createdAt

Number

Upload creation date/time.

changedAt

String

Last modification date/time.

request.id

String

Integrated service request ID. This value is returned only when an end-user initiates the upload in TeC UI, after which e‑Invoice Connect publishes a request to the external integrated service.

parts

Object

Object that contains a collection of upload parts.

parts.count

Number

Number of upload parts in the collection.

parts.items

Array

Array of upload parts.

parts.items[].id

Number

Upload part unique ID.

parts.items[].createdAt

String

Date and time of the upload part creation.

parts.items[].last

Boolean

Flag that indicates whether the upload part finishes the multipart upload.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/suppliers/uploads/135' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 356

{
  "id" : 135,
  "multipart" : false,
  "status" : "Accepted",
  "createdAt" : "2026-08-17T14:56:46+02:00",
  "changedAt" : "2026-08-17T14:56:46+02:00",
  "parts" : {
    "count" : 1,
    "items" : [ {
      "id" : 1001,
      "createdAt" : "2026-08-17T14:56:46+02:00",
      "last" : true
    } ]
  },
  "request" : {
    "id" : 75
  }
}

Member supplier multipart upload endpoint

This endpoint is a collection resource that manages upload parts.

Create a new upload part

The integrated service uses the endpoint to upload additional parts of member information about its suppliers. e-Invoice Connect appends the posted information to an existing multipart upload in the Awaiting state. The property last in the request body set to true works for indicating that the multipart upload is finished. The parts must be sent in a determined sequence. Each subsequent part must be sent after receiving a response to the previous one. When the multipart upload is finished, the upload resource changes its status to Accepted and the upload is queued for processing.

POST /api/members/43/suppliers/uploads/239/parts HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 732092

{
  "last" : false,
  "parties" : {
    "count" : 10000,
    "items" : [
      ...
    ]
  }
}

Path parameters

Table 58. /members/{memberId}/suppliers/uploads/{uploadId}/parts
Parameter Description

memberId

Unique member ID.

uploadId

Unique party upload ID.

Query parameters

No parameters.

Request fields

Path Type Description

last

Boolean

Flag that indicates whether this part finishes multipart upload.

parties

Object

Object that contains member parties.

parties.count

Number

Actual size of parties array (number of items).

parties.items[]

Array

Collection of member party objects. The properties of the objects are the same as in the case of single-part upload.

Response fields

Path Type Description

id

Number

Upload part unique ID.

createdAt

Number

Upload part creation date/time.

last

Boolean

Flag that indicates whether this part finishes the upload.

Example response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 89

{
  "id" : 253099278,
  "createdAt" : "2024-04-27T14:47:40+02:00",
  "last" : false
}

List upload parts

Returns a list of parts of a multipart upload.

GET /api/members/43/suppliers/uploads/239/parts HTTP/1.1

Path parameters

Table 59. /members/{memberId}/suppliers/uploads/{uploadId}/parts
Parameter Description

memberId

Unique member ID.

uploadId

Unique party upload ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

count

Number

Actual size of content array (number of items).

items

Array

Array of upload part objects.

items[].id

Number

Upload part unique ID.

items[].createdAt

String

Upload part creation date/time.

items[].last

Boolean

Flag that indicates whether this part finishes the upload.

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 180

{
  "count" : 2,
  "items" : [{
    "id" : 253099278,
    "createdAt" : "2024-04-27T14:47:40+02:00",
    "last" : false
  }, {
    "id" : 253099287,
    "createdAt" : "2024-04-27T14:47:44+02:00",
    "last" : true
  }]
}

Get upload part details

Returns detailed information about a part of a multipart upload.

GET /api/members/43/suppliers/uploads/239/parts/253099287 HTTP/1.1

Path parameters

Table 60. /members/{memberId}/suppliers/uploads/{uploadId}/parts/{partId}
Parameter Description

memberId

Unique member ID.

uploadId

Unique party upload ID.

partId

Unique party upload part ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

id

Number

Upload part unique ID.

createdAt

String

Upload part creation date/time.

last

Boolean

Flag that indicates whether this part finishes the upload.

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 92

{
  "id" : 253099287,
  "createdAt" : "2024-04-27T14:47:44+02:00",
  "last" : true
}

Member Clearance and Onboarding settings

API that serves the functionality of

  • Management of Clearance service usage for a specific member (switching on and off the subcription)

  • Requesting the integrated Clearance Service provider for the enablement of clearance or/and retrieval services

  • Get request feedback from the integrated Clearance Service provider

With this, a customer service provider can be created, updated and disabled for a specific member. Meanwhile subscription on the service can be switched off/on independently. Member’s country must support clearance workflow.

DEPRECATED API

This API is deprecated and will be removed on February 25, 2026.

Please migrate to the new /services endpoint for extendable service management.

Clearance subscription

Clearance service subscription can be switched on/off on e-Invoice Connect side. Enabling the clearance service subscription will direct the invoice flow to the clearance procedure.

Subscribe or unsubscribe for Clearance

To enable clearance a member’s settings must meet the following conditions:

  • The member must be subscribed to one of the paid service levels.

  • There should exist clearance operator for member’s country.

To configure clearance settings, please refer to the Create new member and Update member sections of the documentation, and use the clearanceWorkflowEnabled property.

Onboard member with Clearance service provider

Send a request to the integrated Clearance Service provider to enable Clearance and/or Retrieval service(s) and track the request status. Customer Token must be sent in case if member country’s clearance provider requires it. Operations for enabling and disabling Clearance and Retrieval services must be processed in separate requests.

Submit onboarding request for a member

This endpoint is deprecated. Use the new /services endpoint instead.

Sunset date: February 25, 2026

POST /api/members/43/onboarding HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 50

{
  "retrieval" : false,
  "clearance" : true
}

Path parameters

Table 61. /members/{memberId}/onboarding
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Request fields

Path Type Description

clearance

Boolean

Clearance on/off setting.

retrieval

Boolean

Retrieval on/off setting.

customerToken

String

Optional field to be used for members which country’s clearance provider requires Customer Token.

Response fields

Path Type Description

requestId

String

Clearance service provider request ID.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/onboarding' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -d '{
  "retrieval" : false,
  "clearance" : true
}'

Example response

HTTP/1.1 201 Created
Warning: 299 - "Deprecated API: use /services for extendable service management"
Sunset: Fri, 25 Feb 2026 00:00:00 GMT
Link: <https://invoiceportal.net/rest/docs>
Content-Type: application/json
Content-Length: 60

{
  "requestId" : "11111111-1111-1111-1111-111111111111"
}

Get information about API request to Clearance service provider

This endpoint is deprecated. Use the new /services endpoint instead.

Sunset date: February 25, 2026

GET /api/members/43/onboarding/11111111-1111-1111-1111-111111111111 HTTP/1.1

Path parameters

Table 62. /members/{memberId}/onboarding/{requestId}
Parameter Description

memberId

Unique member ID.

requestId

Unique API request ID from Clearance service provider.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

requestId

String

API request ID from Clearance service provider.

requestStatus

String

API request status from Clearance service provider.

requestStatusTitle

String

Description of an API request status from Clearance service provider.

operation

String

API operation type from Clearance service provider.

errors

Object

Object that contains API request errors from Clearance service provider if any.

errors.count

Number

Size of errors array.

errors.items[]

Array

Collection of errors.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/onboarding/11111111-1111-1111-1111-111111111111' -i -X GET

Example response

HTTP/1.1 200 OK
Warning: 299 - "Deprecated API: use /services for extendable service management"
Sunset: Fri, 25 Feb 2026 00:00:00 GMT
Link: <https://invoiceportal.net/rest/docs>
Content-Type: application/json
Content-Length: 273

{
  "requestId" : "11111111-1111-1111-1111-111111111111",
  "requestStatus" : "COMPLETED_SUCCEEDED",
  "requestStatusTitle" : "Your request has been successfully processed",
  "operation" : "CREATE_CUSTOMER",
  "errors" : {
    "count" : 0,
    "items" : [ ]
  }
}

Update Member Services

Submits a request to enable, disable, or configure external services for a member. This endpoint provides flexible service management with support for multiple service types and environment-specific configurations.

This method supersedes the deprecated onboardMemberWithClearanceServiceProvider endpoint and provides enhanced control over service enablement.

Path parameters

Table 63. /members/{memberId}/services
Parameter Description

memberId

Unique member ID.

Query parameters

No parameters.

Service Types

The following service types are supported:

Service ID Description Configurable Environments

clearance

Invoice clearance service

Yes

live, test

retrieval

Invoice retrieval service

Yes

live, test

full-buyer-mode

Full buyer mode service

No

live only

Configuration

Both clearance and retrieval services support configuration. When enabling these services for Poland, the customerToken must be provided:

{
  "update": [
    {
      "serviceId": "clearance",
      "environment": "live",
      "enabled": true,
      "config": {
        "customerToken": "authorization-token-from-government"
      }
    }
  ]
}

Business Rules

  • One request can update services in either live or test environment, not both

  • One request can update either CTC services (clearance, retrieval) or non-CTC services (full-buyer-mode), not both

  • A request can either enable or disable services, not both

  • Only one service can be disabled per request

  • Only CTC services can be disabled

  • Only CTC services (clearance, retrieval) can be configured

  • When both clearance and retrieval are in the same request, only one configuration should be provided, and it will apply to both services

Response Status Codes

Status Code Description

202 Accepted

Request successfully submitted for asynchronous processing

204 No Content

No changes needed - requested state matches current state

400 Bad Request

Validation error or business rule violation

409 Conflict

Another service update request is already being processed for this member

Request Body Example

{
  "update": {
    "count": 2,
    "items": [
      {
        "serviceId": "clearance",
        "environment": "live",
        "enabled": true,
        "config": {
          "customerToken": "some-token"
        }
      },
      {
        "serviceId": "retrieval",
        "environment": "live",
        "enabled": true
      }
    ]
  }
}

Response Example

{
  "operationId": "11111111-1111-1111-1111-111111111111"
}

Get Service Request Status

Retrieves detailed status information about a service configuration operation request submitted to the integrated service provider. This endpoint provides comprehensive information about the requested services, their environment-specific configurations, operation type, processing status, and any errors that occurred during execution.

This method is the preferred way to track service operation status and replaces the deprecated getOnboardingRequestStatus method. It returns structured information about clearance, retrieval, and full-buyer-mode service configurations.

GET /api/members/43/services/operations/11111111-1111-1111-1111-111111111111 HTTP/1.1

Path parameters

Table 64. /members/{memberId}/services/operations/{operationId}
Parameter Description

memberId

Unique member ID.

operationId

Service operation unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

operationId

String

Unique operation request ID.

services

Object

Object that contains service configurations.

services.count

Number

Size of service array.

services.items

Array

Collection of requested services.

services.items[].serviceId

String

Service identifier: clearance, retrieval, full-buyer-mode.

services.items[].live

Object

Live environment configuration.

services.items[].live.enabled

Boolean

Whether service is enabled in live environment.

services.items[].test

Object

Test environment configuration.

services.items[].test.enabled

Boolean

Whether service is enabled in test environment.

op

String

Operation type: add, update, remove

status

String

Request status: pending, completed, failed

submittedAt

String

Submission timestamp.

completedAt

String

Completion timestamp.

errors

Object

Object that contains error objects.

errors.count

Number

Size of error array.

errors.items

Array

Array of error objects.

errors.items[].message

String

Error message.

Property op describes the operation type and supports the following values:

Value Description

add

Initial enablement of services.

update

Update or enablement of additional services.

remove

Disabling of services.

Property status describes the processing status and supports the following values:

Value Description

pending

The request is still being processed.

completed

The request has been successfully completed.

failed

The request processing has failed. Check the errors array for details.

Property services is an array of service configurations. Each service includes:

  • serviceId - identifies the service type: clearance, retrieval, or full-buyer-mode

  • live.enabled - whether the service is enabled in the production environment

  • test.enabled - whether the service is enabled in the test environment (only for clearance and retrieval)

Note that full-buyer-mode is only available in the live environment and will not have a test configuration.

Property errors contains an array of error details if the request failed.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/services/operations/11111111-1111-1111-1111-111111111111' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 733

{
  "operationId" : "11111111-1111-1111-1111-111111111111",
  "services" : {
    "count" : 3,
    "items" : [ {
      "serviceId" : "clearance",
      "live" : {
        "enabled" : true
      },
      "test" : {
        "enabled" : true
      }
    }, {
      "serviceId" : "retrieval",
      "live" : {
        "enabled" : true
      }
    }, {
      "serviceId" : "full-buyer-mode",
      "live" : {
        "enabled" : true
      }
    } ]
  },
  "op" : "add",
  "status" : "completed",
  "submittedAt" : "2025-07-28T14:30:00Z",
  "completedAt" : "2025-07-28T14:32:14Z",
  "errors" : {
    "count" : 1,
    "items" : [ {
      "message" : "VAT number is not valid for this country"
    } ]
  }
}

Onboarding French members

French members are onboarded through the same Update Member Services endpoint used for other countries — there is no separate French service id. A request for a member whose country is France is routed through a multi-step operation group: a parent customer creation followed by one or more sequenced sub-requests.

Before onboarding a French member, ensure the member meets these prerequisites:

  • A French organization identifier (SIREN/TVA) is present on the member.

  • The member’s legal and recipient addresses are present.

If a prerequisite is missing, the request is rejected with 400 Bad Request.

KYC

Enabling French live services requires KYC (Know Your Customer) contact information. Provide it in the kycContact object of the /services request:

{
  "update": {
    "count": 1,
    "items": [
      {
        "serviceId": "clearance",
        "environment": "live",
        "enabled": true
      }
    ]
  },
  "kycContact": {
    "email": "kyc@example.com",
    "firstName": "First",
    "lastName": "Last"
  }
}

To re-trigger KYC for a member, send a request whose only operation is retriggerKycReason. A KYC re-trigger must be the sole operation in the request:

{
  "retriggerKycReason": "Updated business registration documents"
}

On a production deployment, enabling French live services is temporarily unavailable and is rejected with 400 Bad Request and the message: "Enabling French production (live) services is temporarily unavailable; only pre-production (test) services can be configured." Only pre-production (test) services can be configured for French members until live onboarding is generally available. KYC is therefore not required on a production deployment.

Tracking a French onboarding group

A French /services request returns its operation group ID (a numeric value) as the operationId. Poll the onboarding progress by passing that numeric group ID to the Get Service Request Status endpoint. For a group ID, the endpoint returns an aggregate group response: op is always "group", status mirrors the group’s groupStatus, and the ordered steps array describes each sub-request.

GET /api/members/43/services/operations/77 HTTP/1.1

Path parameters

Table 65. /members/{memberId}/services/operations/{operationId}
Parameter Description

memberId

Unique member ID.

operationId

Service operation unique ID.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

operationId

String

Operation group ID (numeric for France onboarding groups).

services

Object

Empty object for grouped responses; per-step detail is in the steps array.

services.count

Number

Always 0 for grouped responses.

services.items

Array

Always empty for grouped responses.

op

String

Always "group" for France onboarding group responses.

status

String

Mirrors groupStatus.

submittedAt

String

Group creation timestamp.

completedAt

String

Group completion timestamp.

errors

Object

Empty object for grouped responses; failure detail is conveyed via groupStatus and steps[].status.

errors.count

Number

Always 0 for grouped responses.

errors.items

Array

Always empty for grouped responses.

groupId

String

Operation group ID.

groupStatus

String

Aggregate group status: IN_PROGRESS, COMPLETED, FAILED, CANCELLED.

sequenceTotal

Number

Total number of steps in the group.

steps

Object

Ordered list of sub-request steps.

steps.count

Number

Number of steps in the group.

steps.items

Array

Collection of step objects, ordered by sequenceOrder.

steps.items[].sequenceOrder

Number

Zero-based position of the step within the group.

steps.items[].operation

String

Operation type, e.g. CREATE_CUSTOMER, CREATE_CHILD_CUSTOMER, UPDATE_CTC_SERVICES, DISABLE_CTC_SERVICE, KYC_RETRIGGER.

steps.items[].status

String

Step status: NOT_STARTED, PROCESSING, COMPLETED_SUCCEEDED, COMPLETED_FAILED.

Property groupStatus describes the aggregate status of the group:

Value Description

IN_PROGRESS

One or more steps are still being processed.

COMPLETED

All steps completed successfully.

FAILED

At least one step failed. The group can be retried — see Retry a failed France onboarding group.

CANCELLED

The group was cancelled and will not be processed further.

Each entry in steps.items describes one sub-request. Property operation supports the following values:

Value Description

CREATE_CUSTOMER

Creation of the parent (SIREN) customer record.

CREATE_CHILD_CUSTOMER

Creation of a child (SIRET) customer record under the SIREN parent.

UPDATE_CTC_SERVICES

Enable or update live CTC service configuration.

UPDATE_TEST_CTC_SERVICES

Enable or update test CTC service configuration.

DISABLE_CTC_SERVICE

Disable a live CTC service.

DISABLE_TEST_CTC_SERVICE

Disable a test CTC service.

ENABLE_ADDITIONAL_SERVICES

Enable additional services for an existing customer.

UPDATE_COUNTRY_CONFIGURATIONS

Update live country configurations.

UPDATE_TEST_COUNTRY_CONFIGURATIONS

Update test country configurations.

KYC_RETRIGGER

Re-trigger KYC for the member.

Property status of each step supports the following values:

Value Description

NOT_STARTED

The step has not started yet.

PROCESSING

The step is being processed.

COMPLETED_SUCCEEDED

The step completed successfully.

COMPLETED_FAILED

The step failed.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/services/operations/77' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 608

{
  "operationId" : "77",
  "services" : {
    "count" : 0,
    "items" : [ ]
  },
  "op" : "group",
  "status" : "IN_PROGRESS",
  "submittedAt" : "2025-07-28T14:30:00Z",
  "errors" : {
    "count" : 0,
    "items" : [ ]
  },
  "groupId" : "77",
  "sequenceTotal" : 2,
  "groupStatus" : "IN_PROGRESS",
  "steps" : {
    "count" : 2,
    "items" : [ {
      "sequenceOrder" : 0,
      "operation" : "CREATE_CUSTOMER",
      "status" : "COMPLETED_SUCCEEDED"
    }, {
      "sequenceOrder" : 1,
      "operation" : "CREATE_CHILD_CUSTOMER",
      "status" : "PROCESSING"
    } ]
  }
}

Retry a failed France onboarding group

Retries a failed French onboarding operation group. Only groups in FAILED status can be retried; the retry resumes the failed and remaining steps. This endpoint applies to French onboarding groups only.

POST /api/members/43/services/operations/55/retry HTTP/1.1

Path parameters

Table 66. /members/{memberId}/services/operations/{groupId}/retry
Parameter Description

memberId

Unique member ID.

groupId

France onboarding operation group ID to retry.

Query parameters

No parameters.

Request fields

No request body.

Response Status Codes

Status Code Description

202 Accepted

A retry group was created. The response body contains the new group’s operationId.

204 No Content

Nothing to retry (the group has no failed steps).

404 Not Found

No group with the given ID exists for the member.

409 Conflict

The retry could not be scheduled (for example, another request is already being processed for this member).

Response fields

Path Type Description

operationId

String

ID of the newly created retry operation group.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/services/operations/55/retry' -i -X POST

Example response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 29

{
  "operationId" : "100"
}

French e-Reporting

This part of the API lets an integrated product or member submit French e-Reporting documents (DGFiP Flow 10: B2C transaction aggregates, cross-border B2B invoices, and payment data) through e-Invoice Connect to the French tax authority (DGFiP).

e-Invoice Connect acts as an authenticated gateway. It authenticates and authorizes the caller, registers the submission for processing, and hands back a single-use upload URL. The XML payload is uploaded by the caller directly to the returned URL — the document bytes never pass through e-Invoice Connect, which neither parses, validates, nor stores them. The document type is recognized from the uploaded XML, so the same endpoint handles all three Flow 10 document types and the caller passes no type parameter.

A submission is a two-step interaction:

  1. Register — the caller POSTs small JSON metadata (fileName, fileSizeBytes, md5Checksum). e-Invoice Connect validates and registers it, then returns a submission record together with an upload block (a pre-signed URL and the form fields to send with it).

  2. Upload — the caller POSTs the XML file directly to the upload.url as multipart form data, including every upload.formFields entry followed by the file field last. There is no e-Invoice Connect endpoint for this step.

After upload, the caller polls the get or list endpoint until the submission reaches a terminal status. These reads are served from e-Invoice Connect’s local records and do not make a call to the reporting workflow; a background job keeps the stored status up to date.

Prerequisites and authorization

To use these endpoints a member must:

  • be a French member with exactly one French SIREN party identifier, and

  • have the e-Reporting feature enabled (configured through the member onboarding path, outside this API).

If the feature is not enabled, or the member does not have exactly one SIREN, requests are rejected with 409 Conflict (ereporting_not_enabled).

These endpoints are available to the same callers as the rest of the API — an integrated product, or a member acting on its own account (see Security). The caller must be authorized for the member identified by the path memberId; otherwise the request is rejected with 403 Forbidden. The test-mode endpoints (see below) are additionally available to members provisioned for test integration only.

Live and test environments

e-Reporting submissions are bound to one of two environments, selected only by the URL path — never by an in-band parameter:

Environment Path prefix Description

Live (production)

/ereporting/

Submissions are processed through the live (production) reporting workflow.

Test (pre-production)

/test-ereporting/

Submissions are processed through the pre-production reporting workflow, for integration testing.

The two environments hold separate sets of submissions. A submission registered under one prefix can only be retrieved, reissued, or abandoned under the same prefix; addressing it through the other prefix returns 404 Not Found.

The endpoints below are documented with the live /ereporting/ paths. Every endpoint has an identical test-mode sibling at the corresponding /test-ereporting/ path, with the same request and response shape.

Error responses

All errors use the standard error envelope. The HTTP status conveys the error category, and the message field carries the specific condition — a stable code for validation, idempotency, enablement, and availability errors, or a descriptive message for authorization and not-found errors. The following conditions apply across the e-Reporting endpoints.

HTTP status message Trigger

400 Bad Request

idempotency_key_required

The Idempotency-Key header is missing on register.

400 Bad Request

idempotency_key_invalid

The Idempotency-Key header is not a valid UUID.

400 Bad Request

invalid_file_name

fileName is missing or does not match the required pattern.

400 Bad Request

invalid_file_size

fileSizeBytes is missing or out of range.

400 Bad Request

invalid_md5_checksum

md5Checksum is missing or is not the base64 of a 16-byte digest.

403 Forbidden

Access to API is forbidden

The caller is not authorized for the path memberId.

404 Not Found

<resource> <id> not found

No such member, or no such submission for the member in the addressed environment.

409 Conflict

ereporting_not_enabled

The e-Reporting feature is not enabled, or the member does not have exactly one SIREN.

409 Conflict

idempotency_key_conflict

The Idempotency-Key was reused with a different request body.

409 Conflict

upload_already_received

Re-issue requested for a submission whose file has already been uploaded.

409 Conflict

submission_abandoned

Re-issue requested for an abandoned submission.

409 Conflict

cannot_abandon

Abandon requested for a submission that is no longer awaiting upload.

422 Unprocessable Entity

Invalid extended query parameter name

An unsupported q filter key was supplied to the list endpoint.

503 Service Unavailable

reporting_service_unavailable

The reporting workflow is temporarily unavailable. A Retry-After header is set and the idempotency key is preserved, so the caller can safely retry with the same key.

e-Reporting submission endpoint

This endpoint is a collection resource that manages French e-Reporting submissions.

Register an e-Reporting submission

Registers a new submission and returns a single-use upload URL.

POST /api/members/43/ereporting/submissions HTTP/1.1
Content-Type: application/json
Accept: application/json
Idempotency-Key: f47ac10b-58cc-4372-a567-0e02b2c3d479
X-Correlation-Id: 307823d2-201c-4eb8-a8e0-94bc4b6fa5dc
Content-Length: 121

{
  "fileName" : "flow10-submission.xml",
  "fileSizeBytes" : 1048576,
  "md5Checksum" : "CY9rzUYh03PK3k6DJie08g=="
}

Path parameters

Table 67. /members/{memberId}/ereporting/submissions
Parameter Description

memberId

Unique member ID.

Request headers

Header Description

Idempotency-Key

Mandatory. A caller-generated UUID that makes register idempotent. Reusing the same key with the same body replays the original submission and returns a fresh upload URL (200 OK); reusing it with a different body is rejected with 409 idempotency_key_conflict. The key is released if the submission is abandoned.

X-Correlation-Id

Optional. A caller-supplied correlation id stored with the submission and echoed back in both the response body and the X-Correlation-Id response header. If omitted, e-Invoice Connect generates one.

Query parameters

No parameters.

Request fields

Path Type Description

fileName

String

Name of the XML file to upload. Must match ^[A-Za-z0-9._-]{1,128}\.xml$ (1 to 128 characters ending in .xml).

fileSizeBytes

Number

Exact size of the file in bytes. Must be between 1 and the configured maximum (52428800, i.e. 50 MB, by default).

md5Checksum

String

Base64-encoded MD5 digest of the file (the base64 encoding of the 16-byte digest, following the S3 Content-MD5 convention). Stored for audit only.

Response fields

Path Type Description

submissionId

String

Unique submission identifier. Absent until the submission has been registered for processing.

status

String

Submission status. One of AWAITING_UPLOAD, TRANSMITTED, ACCEPTED, VALIDATION_FAILED, REJECTED, ABANDONED.

fileName

String

The registered file name.

fileSizeBytes

Number

The registered file size in bytes.

createdAt

String

ISO-8601 UTC time the submission was registered.

lastStatusAt

String

ISO-8601 UTC time of the most recent status change.

uploadedAt

String

ISO-8601 UTC time the file upload was received. Absent while awaiting upload.

uploadURLExpiresAt

String

ISO-8601 UTC expiry of the most recently issued upload URL. Absent if none has been issued yet.

idempotencyKey

String

The caller-supplied idempotency key.

correlationId

String

The correlation id associated with the submission.

errors

Array

Submission errors. Always present; empty unless the submission is in a failed terminal state.

errors[].code

String

Downstream error code (e.g. REJ_SEMAN). May be absent.

errors[].message

String

Human-readable error summary.

errors[].detail

String

Additional error detail. May be absent.

errors[].type

String

Error category: validation, integration, or system.

upload

Object

Single-use upload instructions. Present on register and re-issue responses only.

upload.url

String

Pre-signed URL to which the file must be POSTed as multipart form data.

upload.formFields

Object

Map of form fields that must be included (before the file field) in the upload POST.

Response status codes

Status Code Description

202 Accepted

A new submission was registered. The upload block is returned and a Location header points at the submission resource.

200 OK

A matched idempotent retry (same key, same body). The original submission is returned with a fresh upload block.

See Error responses for failure cases.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/ereporting/submissions' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Idempotency-Key: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
    -H 'X-Correlation-Id: 307823d2-201c-4eb8-a8e0-94bc4b6fa5dc' \
    -d '{
  "fileName" : "flow10-submission.xml",
  "fileSizeBytes" : 1048576,
  "md5Checksum" : "CY9rzUYh03PK3k6DJie08g=="
}'

Example response

HTTP/1.1 202 Accepted
X-Correlation-Id: 307823d2-201c-4eb8-a8e0-94bc4b6fa5dc
Location: /api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Content-Type: application/json
Content-Length: 968

{
  "submissionId" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status" : "AWAITING_UPLOAD",
  "fileName" : "flow10-submission.xml",
  "fileSizeBytes" : 1048576,
  "createdAt" : "2026-04-20T10:30:00Z",
  "lastStatusAt" : "2026-04-20T10:45:00Z",
  "idempotencyKey" : "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "correlationId" : "307823d2-201c-4eb8-a8e0-94bc4b6fa5dc",
  "errors" : [ ],
  "upload" : {
    "url" : "https://ereporting-prod.s3.eu-west-1.amazonaws.com",
    "formFields" : {
      "key" : "uploads/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/flow10-submission.xml",
      "Content-MD5" : "CY9rzUYh03PK3k6DJie08g==",
      "x-amz-algorithm" : "AWS4-HMAC-SHA256",
      "x-amz-credential" : "AKIAEXAMPLE/20260420/eu-west-1/s3/aws4_request",
      "x-amz-date" : "20260420T103000Z",
      "x-amz-signature" : "abcd0123ef456789",
      "policy" : "eyJleHBpcmF0aW9uIjoi..."
    }
  },
  "uploadURLExpiresAt" : "2026-04-20T14:30:00Z"
}
The upload.url is single-use and expires at uploadURLExpiresAt. If it expires before the file is uploaded, request a fresh one with the re-issue endpoint rather than registering a new submission.

Re-issue an upload URL

Mints a fresh upload URL for a submission that is still awaiting upload. The submission identity and idempotency key are unchanged.

POST /api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/upload-url HTTP/1.1
Accept: application/json

Path parameters

Table 68. /members/{memberId}/ereporting/submissions/{submissionId}/upload-url
Parameter Description

memberId

Unique member ID.

submissionId

Unique submission identifier assigned when the submission is registered.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

submissionId

String

Unique submission identifier. Absent until the submission has been registered for processing.

status

String

Submission status. One of AWAITING_UPLOAD, TRANSMITTED, ACCEPTED, VALIDATION_FAILED, REJECTED, ABANDONED.

fileName

String

The registered file name.

fileSizeBytes

Number

The registered file size in bytes.

createdAt

String

ISO-8601 UTC time the submission was registered.

lastStatusAt

String

ISO-8601 UTC time of the most recent status change.

uploadedAt

String

ISO-8601 UTC time the file upload was received. Absent while awaiting upload.

uploadURLExpiresAt

String

ISO-8601 UTC expiry of the most recently issued upload URL. Absent if none has been issued yet.

idempotencyKey

String

The caller-supplied idempotency key.

correlationId

String

The correlation id associated with the submission.

errors

Array

Submission errors. Always present; empty unless the submission is in a failed terminal state.

errors[].code

String

Downstream error code (e.g. REJ_SEMAN). May be absent.

errors[].message

String

Human-readable error summary.

errors[].detail

String

Additional error detail. May be absent.

errors[].type

String

Error category: validation, integration, or system.

upload

Object

Single-use upload instructions. Present on register and re-issue responses only.

upload.url

String

Pre-signed URL to which the file must be POSTed as multipart form data.

upload.formFields

Object

Map of form fields that must be included (before the file field) in the upload POST.

Response status codes

Status Code Description

200 OK

A fresh upload URL was issued.

Returns 404 submission_not_found for an unknown submission, 409 upload_already_received if the file was already uploaded, or 409 submission_abandoned if the submission was abandoned. See Error responses.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/upload-url' -i -X POST \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 968

{
  "submissionId" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status" : "AWAITING_UPLOAD",
  "fileName" : "flow10-submission.xml",
  "fileSizeBytes" : 1048576,
  "createdAt" : "2026-04-20T10:30:00Z",
  "lastStatusAt" : "2026-04-20T10:45:00Z",
  "idempotencyKey" : "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "correlationId" : "307823d2-201c-4eb8-a8e0-94bc4b6fa5dc",
  "errors" : [ ],
  "upload" : {
    "url" : "https://ereporting-prod.s3.eu-west-1.amazonaws.com",
    "formFields" : {
      "key" : "uploads/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/flow10-submission.xml",
      "Content-MD5" : "CY9rzUYh03PK3k6DJie08g==",
      "x-amz-algorithm" : "AWS4-HMAC-SHA256",
      "x-amz-credential" : "AKIAEXAMPLE/20260420/eu-west-1/s3/aws4_request",
      "x-amz-date" : "20260420T103000Z",
      "x-amz-signature" : "abcd0123ef456789",
      "policy" : "eyJleHBpcmF0aW9uIjoi..."
    }
  },
  "uploadURLExpiresAt" : "2026-04-20T14:30:00Z"
}

Abandon a submission

Abandons a submission that is still awaiting upload, releasing its idempotency key for reuse. Once a file has been uploaded a submission cannot be recalled — corrections are made by sending a new submission with corrective semantics in the XML.

POST /api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/abandon HTTP/1.1
Accept: application/json

Path parameters

Table 69. /members/{memberId}/ereporting/submissions/{submissionId}/abandon
Parameter Description

memberId

Unique member ID.

submissionId

Unique submission identifier assigned when the submission is registered.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

submissionId

String

Unique submission identifier. Absent until the submission has been registered for processing.

status

String

Submission status. One of AWAITING_UPLOAD, TRANSMITTED, ACCEPTED, VALIDATION_FAILED, REJECTED, ABANDONED.

fileName

String

The registered file name.

fileSizeBytes

Number

The registered file size in bytes.

createdAt

String

ISO-8601 UTC time the submission was registered.

lastStatusAt

String

ISO-8601 UTC time of the most recent status change.

uploadedAt

String

ISO-8601 UTC time the file upload was received. Absent while awaiting upload.

uploadURLExpiresAt

String

ISO-8601 UTC expiry of the most recently issued upload URL. Absent if none has been issued yet.

idempotencyKey

String

The caller-supplied idempotency key.

correlationId

String

The correlation id associated with the submission.

errors

Array

Submission errors. Always present; empty unless the submission is in a failed terminal state.

errors[].code

String

Downstream error code (e.g. REJ_SEMAN). May be absent.

errors[].message

String

Human-readable error summary.

errors[].detail

String

Additional error detail. May be absent.

errors[].type

String

Error category: validation, integration, or system.

upload

Object

Single-use upload instructions. Present on register and re-issue responses only.

upload.url

String

Pre-signed URL to which the file must be POSTed as multipart form data.

upload.formFields

Object

Map of form fields that must be included (before the file field) in the upload POST.

The returned status is ABANDONED and the upload block is omitted.

Response status codes

Status Code Description

200 OK

The submission was abandoned.

Returns 404 submission_not_found for an unknown submission, or 409 cannot_abandon if the submission is no longer awaiting upload. See Error responses.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/abandon' -i -X POST \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 438

{
  "submissionId" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status" : "ABANDONED",
  "fileName" : "flow10-submission.xml",
  "fileSizeBytes" : 1048576,
  "createdAt" : "2026-04-20T10:30:00Z",
  "lastStatusAt" : "2026-04-20T10:45:00Z",
  "idempotencyKey" : "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "correlationId" : "307823d2-201c-4eb8-a8e0-94bc4b6fa5dc",
  "errors" : [ ],
  "uploadURLExpiresAt" : "2026-04-20T14:30:00Z"
}

Get an e-Reporting submission

Returns a single submission. Served from e-Invoice Connect’s local record; no call to the reporting workflow is made.

GET /api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890 HTTP/1.1
Accept: application/json

Path parameters

Table 70. /members/{memberId}/ereporting/submissions/{submissionId}
Parameter Description

memberId

Unique member ID.

submissionId

Unique submission identifier assigned when the submission is registered.

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Description

submissionId

String

Unique submission identifier. Absent until the submission has been registered for processing.

status

String

Submission status. One of AWAITING_UPLOAD, TRANSMITTED, ACCEPTED, VALIDATION_FAILED, REJECTED, ABANDONED.

fileName

String

The registered file name.

fileSizeBytes

Number

The registered file size in bytes.

createdAt

String

ISO-8601 UTC time the submission was registered.

lastStatusAt

String

ISO-8601 UTC time of the most recent status change.

uploadedAt

String

ISO-8601 UTC time the file upload was received. Absent while awaiting upload.

uploadURLExpiresAt

String

ISO-8601 UTC expiry of the most recently issued upload URL. Absent if none has been issued yet.

idempotencyKey

String

The caller-supplied idempotency key.

correlationId

String

The correlation id associated with the submission.

errors

Array

Submission errors. Always present; empty unless the submission is in a failed terminal state.

errors[].code

String

Downstream error code (e.g. REJ_SEMAN). May be absent.

errors[].message

String

Human-readable error summary.

errors[].detail

String

Additional error detail. May be absent.

errors[].type

String

Error category: validation, integration, or system.

upload

Object

Single-use upload instructions. Present on register and re-issue responses only.

upload.url

String

Pre-signed URL to which the file must be POSTed as multipart form data.

upload.formFields

Object

Map of form fields that must be included (before the file field) in the upload POST.

The upload block is omitted on this response. Returns 404 submission_not_found for an unknown submission or one that does not belong to the addressed environment. See Error responses.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/ereporting/submissions/a1b2c3d4-e5f6-7890-abcd-ef1234567890' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 660

{
  "submissionId" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status" : "REJECTED",
  "fileName" : "flow10-submission.xml",
  "fileSizeBytes" : 1048576,
  "createdAt" : "2026-04-20T10:30:00Z",
  "lastStatusAt" : "2026-04-20T10:45:00Z",
  "uploadedAt" : "2026-04-20T10:33:00Z",
  "idempotencyKey" : "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "correlationId" : "307823d2-201c-4eb8-a8e0-94bc4b6fa5dc",
  "errors" : [ {
    "code" : "REJ_SEMAN",
    "message" : "Semantic format control violation",
    "detail" : "Invalid VAT rate for transaction category TLB1",
    "type" : "validation"
  } ],
  "uploadURLExpiresAt" : "2026-04-20T14:30:00Z"
}

List e-Reporting submissions

Returns a paged list of submissions for a member in the addressed environment. Served entirely from e-Invoice Connect’s local records.

GET /api/members/43/ereporting/submissions?page=1&size=20&sort=createdAt:desc&q=%7B%22status%22:%22ACCEPTED%22%7D HTTP/1.1
Accept: application/json

Path parameters

Table 71. /members/{memberId}/ereporting/submissions
Parameter Description

memberId

Unique member ID.

Query parameters

Parameter Description

page

Page number to return.

size

Number of items per page.

sort

Optional sorting. Sortable properties: createdAt, lastStatusAt. Default createdAt:desc.

q

Optional extended query filter. Supported keys: createdAt, lastStatusAt, status, correlationId.

The q filter accepts an extended query; an unsupported key is rejected with 422 unprocessable_entity. The status key accepts one or more submission status values. Supports standard paging and sorting query parameters.

Request fields

No request body.

Response fields

Path Type Description

page

Number

Page number.

count

Number

Actual size of content array (number of items).

total

Number

Total number of existing items.

pages

Number

Total number of pages with current page size.

items

Array

Array of e-Reporting submissions.

items[].submissionId

String

Unique submission identifier. Absent until the submission has been registered for processing.

items[].status

String

Submission status. One of AWAITING_UPLOAD, TRANSMITTED, ACCEPTED, VALIDATION_FAILED, REJECTED, ABANDONED.

items[].fileName

String

The registered file name.

items[].fileSizeBytes

Number

The registered file size in bytes.

items[].createdAt

String

ISO-8601 UTC time the submission was registered.

items[].lastStatusAt

String

ISO-8601 UTC time of the most recent status change.

items[].uploadedAt

String

ISO-8601 UTC time the file upload was received. Absent while awaiting upload.

items[].uploadURLExpiresAt

String

ISO-8601 UTC expiry of the most recently issued upload URL. Absent if none has been issued yet.

items[].idempotencyKey

String

The caller-supplied idempotency key.

items[].correlationId

String

The correlation id associated with the submission.

items[].errors

Array

Submission errors. Always present; empty unless the submission is in a failed terminal state.

items[].errors[].code

String

Downstream error code (e.g. REJ_SEMAN). May be absent.

items[].errors[].message

String

Human-readable error summary.

items[].errors[].detail

String

Additional error detail. May be absent.

items[].errors[].type

String

Error category: validation, integration, or system.

items[].upload

Object

Single-use upload instructions. Present on register and re-issue responses only.

items[].upload.url

String

Pre-signed URL to which the file must be POSTed as multipart form data.

items[].upload.formFields

Object

Map of form fields that must be included (before the file field) in the upload POST.

Each items entry is a submission summary; the upload block is omitted in list responses.

Example request

$ curl 'https://web.invoiceportal.net/api/members/43/ereporting/submissions?page=1&size=20&sort=createdAt:desc&q=%7B%22status%22:%22ACCEPTED%22%7D' -i -X GET \
    -H 'Accept: application/json'

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 588

{
  "page" : 1,
  "count" : 1,
  "total" : 1,
  "pages" : 1,
  "items" : [ {
    "submissionId" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status" : "ACCEPTED",
    "fileName" : "flow10-submission.xml",
    "fileSizeBytes" : 1048576,
    "createdAt" : "2026-04-20T10:30:00Z",
    "lastStatusAt" : "2026-04-20T10:45:00Z",
    "uploadedAt" : "2026-04-20T10:33:00Z",
    "idempotencyKey" : "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "correlationId" : "307823d2-201c-4eb8-a8e0-94bc4b6fa5dc",
    "errors" : [ ],
    "uploadURLExpiresAt" : "2026-04-20T14:30:00Z"
  } ]
}

e-Reporting submission status

The status field follows this caller-facing lifecycle. The normal progression is AWAITING_UPLOADTRANSMITTEDACCEPTED, with VALIDATION_FAILED and REJECTED as alternative terminal outcomes and ABANDONED as an e-Invoice Connect-local terminal state.

Status Description

AWAITING_UPLOAD

The submission is registered and is waiting for the caller to upload the file.

TRANSMITTED

The file has been uploaded and received for processing; processing is in progress.

ACCEPTED

Processing completed successfully and the submission was accepted by the tax authority.

VALIDATION_FAILED

The submission was rejected during validation, before transmission to the tax authority. The errors array describes the failures.

REJECTED

The submission was rejected during processing or by the tax authority. The errors array describes the failures.

ABANDONED

The submission was abandoned — explicitly by the caller, or automatically when the upload URL expired before the file was uploaded.

Member Management Audit Report

Use this API to obtain an audit report for member management activity for members.

The audit log has records about member management operations like member creation, update, and deletion. This includes managing member addresses, party identifiers, users, payment means, and clearance settings carried out through API.

Only the operations performed by the calling integrated product are included in the report.

Only update operations (create, update and delete) are logged. Operations that only request information are not logged.

The log has information only about operations that have been made via API. Operations that are done via Invoice e-Connect portal UI are not logged.

Member management audit report endpoint

This endpoint is a collection resource the records of that have information about member management events.

This API returns maximum 10000 records per request. If the number of records exceeds this limit, the API returns the first 10000 records only. Use the size and page query parameters to get more records.

Request API member management audit report

Use this API to request the audit report.

GET /api/reports/member-audit?memberId=1&dateFrom=2024-05-01&dateTo=2024-10-1&size=100&page=1 HTTP/1.1

Path parameters

No parameters.

Query parameters

Parameter Type Description

memberId

Number

Unique member ID.

dateFrom

String

First day of the date range to return the records for.

dateTo

String

Last day of the date range to return the records for.

Supports standard paging query parameters with the maximum page size is 10000.

Request fields

No request body.

Response fields

Path Type Description

items

Array

Array of audit records.

count

Number

Number of returned audit records.

items[].eventTime

String

Event time

items[].apiName

String

API name that was used to change the member

items[].eventType

String

Event type

items[].memberId

Long

ID of the changed member

items[].oldObjectId

Long

ID of the changed or removed sub-object (like address, party identifier, etc.).

items[].newObjectId

Long

ID of the created sub-object (like address, party identifier, etc.)

items[].eventResult

String

Event result (Success or Failure).

items[].errorText

String

Error text

Example request

$ curl 'https://web.invoiceportal.net/api/reports/member-audit?memberId=1&dateFrom=2024-05-01&dateTo=2024-10-1&size=100&page=1' -i -X GET

Example response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 484

{
  "count" : 2,
  "items" : [ {
    "eventTime" : "2024-05-01T16:52:01.001",
    "apiName" : "createMember",
    "eventType" : "Create member",
    "memberId" : 1,
    "newObjectId" : 4,
    "eventResult" : "Success"
  }, {
    "eventTime" : "2024-05-02T16:52:02.001",
    "apiName" : "createAddress",
    "eventType" : "Set legal address",
    "memberId" : 2,
    "oldObjectId" : 5,
    "eventResult" : "Failure",
    "errorText" : "Address already exists"
  } ]
}

Appendix

Security

To be able to call the web service API endpoints, use the HTTPS protocol only. A more strict requirement is that only the TLS 1.2 protocol is accepted by the server. An even more strict requirement is that to prove that the caller has the authority to access the protected resources, the caller must provide an access token in the standard Authorization request header.

The web service supports the OAuth2 standard along with the Client Credentials grant type.

To obtain an access token, send a request to a special authorization endpoint and provide its client ID and a client assertion. The client assertion is a signed JSON Web Token that must have set the following standard claims that all will be validated by the authorization service.

Table 72. Client assertion public claims
Claim Description Meaning

iss

Issuer

Name of the product that issues the assertion. For example, ReadSoftOnline.

Or

ID of the member that issued the assertion.

sub

Subject

Client for which the assertion is issued. This must be the client ID.

aud

Audience

Receiver of the assertion. Must be InvoicePortal.

exp

Expiration Time

Time until which the assertion is valid.

nbf

Not Before

Time before which the assertion is not valid.

iat

Issued At

Time when the assertion is issued.

jti

JWT ID

A unique ID of the issued assertion.

e-Invoice Connect can authenticate integrated Tungsten Automation product or e-Invoice Connect member via API.

To provide all the required values and then properly sign the created JWT, use a client ID, a product name, and a client secret key that are registered in e-Invoice Connect and then received as part of the procedure of integrating the product with e-Invoice Connect. Otherwise, use the client ID, member ID, and a client secret key obtained from the member account Settings page.

To create the signature part of the client assertion, use the HMAC SHA256 algorithm.

Once you have created a signed JWT to provide as a client assertion, send a POST request and specify several form parameters in the request body.

Table 73. The required authorization request form parameters
Name Description

grant_type

OAuth2 grant type. Must be client_credentials.

client_id

Client ID as registered in e-Invoice Connect.

client_assertion_type

Type of the client assertion. Must be urn:ietf:params:oauth:client-assertion-type:jwt-bearer.

client_assertion

The client assertion. A signed JWT.

Sample authorization request
POST /api/oauth2/tokens HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept: application/json

grant_type=client_credentials&
client_id=57b91407-60cd-41cc-b63e-fdec7f611f94&
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&
client_assertion=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1N2I5MTQwNy02MGNkLTQxY2MtYjYzZS1mZGVjN2Y2MTFmOTQiLCJpc3MiOiJSZWFkU29mdE9ubGluZSIsImF1ZCI6Ikludm9pY2VQb3J0YWwiLCJleHAiOjE1NTkyNDI0ODgsIm5iZiI6MTU1OTI0MjQyOCwiaWF0IjoxNTU5MjQyNDI4LCJqdGkiOiJiOWQ1ZjRhNC02NjZlLTQyOTEtYjBjNC1lYzdjOGZlMzllNzQifQ.5IQ-mvMYQKqlJx-viEB1dtsVamKicgD3ZxRBqTDw0QY
Sample authorization response
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache
Pragma: no-cache
Content-Type: application/json; charset=UTF-8

{
 "token_type": "Bearer",
 "expires_in": 900,
 "access_token": "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJbnZvaWNlUG9ydGFsIiwiYXVkIjoiUmVhZFNvZnRPbmxpbmUiLCJzdWIiOiI1ZmI0Y2VlNi1hMTljLTQ1OGQtOTA0ZS0yNWY4YzQ5N2I1NjciLCJleHAiOjE1NTkyNDM1MjIsIm5iZiI6MTU1OTI0MzQ2MiwiaWF0IjoxNTU5MjQzNDYyLCJqdGkiOiI1ZjkyMWE3ZS1iMTk2LTRiMGYtYTZkMC1kYjYxOWJjZmZhYjUifQ.X04Co7cfx41QUuMYMHOIqKbWsTteU99ywAvoiG-eDUDWyf7P6v39rn2VAbMSVuoB0Cs81o3RkNcPrHD1gSnisaH3LEEg2MPEwJWdHAUM1SnYDLJTXaEtrxNGSPtvdDOf-rdU0R49b1yqaJ84zq3rso-Fck5MfXS5fTw2EhHALgSiohYgRTrx5XiNx_V_BG4YZNyMfASrI2FRaBR_JKYylTZt6XN7RjYtOBZxDWVwq3MHSnEwiYHB3RS_48yFI2L7c_Ym8SfH1V0r8j04qW5Z08ahdaI-LbaXga6isfoJWOkJNWztts6zY9_Ng-AeNXFVD68xz-bMMh1iqDq-aLZABA"
}

If the authorization endpoint successfully verifies that the incoming request is valid, and authenticates the caller, it creates an access token and sends it in the response body. Use the received token to access the protected resource endpoints.

An access token is also a signed JSON Web Token which signature also can be verified by the caller using the server public key. The token contains the same public claims as the client assertion including the time frame within which it is valid. The public key is obtained from e-Invoice Connect along with a client ID and a client secret key. By verifying the token signature the caller can make sure that the token has been really created by e-Invoice Connect and not by anyone else.

To send a request to a protected endpoint, add the access token in the Authorization header and set the Bearer value as the token type.

Sample request to a protected endpoint
GET /api/members HTTP/1.1
Accept: application/json
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJbnZvaWNlUG9ydGFsIiwiYXVkIjoiUmVhZFNvZnRPbmxpbmUiLCJzdWIiOiI1ZmI0Y2VlNi1hMTljLTQ1OGQtOTA0ZS0yNWY4YzQ5N2I1NjciLCJleHAiOjE1NTkyNDM1MjIsIm5iZiI6MTU1OTI0MzQ2MiwiaWF0IjoxNTU5MjQzNDYyLCJqdGkiOiI1ZjkyMWE3ZS1iMTk2LTRiMGYtYTZkMC1kYjYxOWJjZmZhYjUifQ.X04Co7cfx41QUuMYMHOIqKbWsTteU99ywAvoiG-eDUDWyf7P6v39rn2VAbMSVuoB0Cs81o3RkNcPrHD1gSnisaH3LEEg2MPEwJWdHAUM1SnYDLJTXaEtrxNGSPtvdDOf-rdU0R49b1yqaJ84zq3rso-Fck5MfXS5fTw2EhHALgSiohYgRTrx5XiNx_V_BG4YZNyMfASrI2FRaBR_JKYylTZt6XN7RjYtOBZxDWVwq3MHSnEwiYHB3RS_48yFI2L7c_Ym8SfH1V0r8j04qW5Z08ahdaI-LbaXga6isfoJWOkJNWztts6zY9_Ng-AeNXFVD68xz-bMMh1iqDq-aLZABA

A request that does not have an access token gets rejected, and the expected response is as follows.

HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=UTF-8

{
 "status": "401",
 "error": "Unauthorized",
 "path": "/api/members",
 "timestamp": "2019-05-30T21:13:09.987+02:00",
 "details": []
}

Note: When logged in with your member credentials, you may get the "unauthorized" error. The list of all members is unavailable to an authorized member. You cannot access Vendor Onboarding endpoints. Also, you cannot request other member details and upgrade or delete them. The memberID parameter must match the ID of the authorized member.

Enable using the e-Invoice Connect API

If you use other Tungsten Automation products, you can access your e-Invoice Connect member data from these products via API. Otherwise you can use member API authentication for access.

To enable a member to use the e-Invoice Connect API, update the member by setting the apiEnabled property to true as follows:

PATCH /api/members/{existing-member-id} HTTP/1.1
Accept: application/json
Authorization: Bearer <access_token>
X-Authorization: Basic <credentials>
Content-Type: application/json

{
 "apiEnabled" : true
}

Only authenticated Tungsten Automation products (not e-Invoice Connect members) can change the apiEnabled property for a member.

Note that for API-created members, apiEnabled is set to true by default.

In this request, use the X-Authorization header in addition to the standard Authorization header. The value is Basic <credentials>, where <credentials> stands for the Base64 encoding of a user email and password delimited by a colon. The standard Authorization is used for the OAuth2 access token. For more information about Authorization, see Security.

A successful request makes the member associated with the product.

To disable a member to use the e-Invoice Connect API, a similar request can be issued with apiEnabled property set to false. Association of the member with the product is removed by this request.

Receive invoices via an API integration

If you are enabled to use e-Invoice Connect API, you can set up receiving invoices from e-Invoice Connect into other Tungsten Automation products you have.

  1. Make sure that apiEnabled is set to true.

  2. Log in as the member’s administrator to the e-Invoice Connect UI and select the option "Receive invoices via API integration" in e-Invoice Connect Receiving settings.

Single Sign-On (SSO)

e-Invoice Connect supports Single Sign-On without showing up the login and consent screens.

Single Sign-On API uses the OAuth 2.0 protocol for authentication and authorization, which conforms to the OpenID Connect specification with the authorization code flow.

Integrated service needs to implement what makes up an identity provider, i.e. it must have a few standard endpoints.

Table 74. Identity provider standard endpoints
Endpoint Description

/a-well-known-endpoint-for-discovery

Endpoint discovery.

/authorize

Authorization endpoint.

/tokens

Token endpoint.

/jwks-uri

JSON Web Key set endpoint.

Integrated service registers e-Invoice Connect as a client and stores its

  • redirect URI provided by e-Invoice Connect

  • service ID provided by Integrated service and given to e-Invoice Connect (UUID value)

  • client ID provided by Integrated service and given to e-Invoice Connect

  • client key provided by Integrated service and given to e-Invoice Connect

Integrated service shares its own discovery endpoint with e-Invoice Connect. This endpoint is stored by e-Invoice Connect. e-Invoice Connect uses discovery endpoint response to get identity provider’s configuration, including all necessary endpoints and public key location information.

Table 75. Provider configuration response claims required
Claim Description

issuer

Issuer identifier, which is a URL that uses the "https" scheme and has no query or fragment components.

authorization_endpoint

URL of the authorization endpoint.

token_endpoint

URL of the token endpoint.

jwks_uri

URL of the JWK Set document.

token_endpoint_auth_methods_supported

Must include client_secret_jwt

The successful flow should look like this:

  1. Integrated service user logs in to their account in the service.

    We assume that the user organization has a connection to an e-Invoice Connect member account, and the user wants to get access to the e-Invoice Connect UI under that member account and under their own user account existing in Integrated service. e-Invoice Connect member must be enabled to use the e-Invoice Connect API.

  2. The user follows a link in their browser that directs them to the e-Invoice Connect site, such as https://web.invoiceportal.net/login.

    The request form has the following body parameters.

    Table 76. Login request parameters
    Parameter Description

    service_id

    Service ID that uniquely defines Integrated service for e-Invoice Connect. A UUID value.

    member_id

    e-Invoice Connect member account identifier the user wants to get access to.

    Sample SSO login request:

    POST /login HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    member_id=1865067&service_id=57b91407-60cd-41cc-b63e-fdec7f611f94
  3. e-Invoice Connect verifies the service ID and initiates the OpenID Connect authorization code flow.

    e-Invoice Connect sends a request to the authorization endpoint and supplies these standard parameters:

    response_type=code
    client_id=<the e-Invoice Connect client ID known by the service>
    scope=openid email profile https://web.invoiceportal.net/member
    redirect_uri=<e.g. https://web.invoiceportal.net/api/oauth2/callback>
    state=<an opaque state value>
    nonce=<a nonce value>
    prompt=none
    response_mode=form_post

    The scope parameter values tell Integrated service that e-Invoice Connect requests an ID token with the email and the basic profile claims. https://web.invoiceportal.net/member is a custom scope that expects custom https://web.invoiceportal.net/member/id claim to be included into ID token.

    The prompt parameter value requests not to display the login and consent screens. We assume that the consent has already been given by the user or their organization at some earlier step.

    Sample SSO login response:

    HTTP/1.1 302 Found
    Content-Type: text/html; charset=utf-8
    Location: /openidconnect/rest/openid/authorize?response_type=code&client_id=12345&scope=https%3A%2F%2Fweb.invoiceportal.net%2Fmember+openid+profile+email&redirect_uri=https%3A%2F%2Fweb.invoiceportal.net%2Fapi%2Foauth2%2Fcallback&state=11318e1f-d943-487a-b627-8c9d4645d5ef&nonce=kW7RLEmL42228kL0mGpE8hr38EK44vrSN0N01KppOps&prompt=none&response_mode=form_post
  4. e-Invoice Connect redirects the user’s browser to hit the Integrated service /authorize endpoint.

  5. Integrated service must verify that the request has a session cookie of the user to make sure it comes not from an impersonator trying to log in to e-Invoice Connect.

  6. If all checks are fine (the user did log in and the session is active), Integrated service issues a super-short-living one-time-use code and redirects the user’s browser to the e-Invoice Connect redirect URI attaching the code as a form parameter.

    Sample authorization response:

    POST /api/oauth2/callback HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    code=7d12133349ee40cdb7ee54b93507f2c4&state=11318e1f-d943-487a-b627-8c9d4645d5ef
  7. e-Invoice Connect extracts the code from the request and sends a request to the token endpoint to exchange the code for an ID token. Upon sending the request, e-Invoice Connect must properly authenticate itself for the Integrated service.

    The web service supports the OAuth2 standard along with the Client Credentials grant type.

    To obtain an ID token, e-Invoice Connect provides its client ID and a client assertion. The client assertion is a JSON Web Token signed with the client secret initially given to e-Invoice Connect by Integrated service that has set the following standard claims that all must be validated by the Integrated service.

    Table 77. Client assertion public claims
    Claim Description Meaning

    iss

    Issuer

    Integrated service Client ID

    sub

    Subject

    Client for which the assertion is issued. This must be the client ID.

    aud

    Audience

    Receiver of the assertion. Token endpoint issued by the identity provider.

    exp

    Expiration Time

    Time until which the assertion is valid.

    nbf

    Not Before

    Time before which the assertion is not valid.

    iat

    Issued At

    Time when the assertion is issued.

    jti

    JWT ID

    A unique ID of the issued assertion. A UUID value.

    Once e-Invoice Connect have created a signed JWT to provide as a client assertion, a POST request is sent and several form parameters are specified in the request body.

    Table 78. The token request form parameters:

    Name

    Description

    grant_type

    OAuth2 grant type. Must be client_credentials.

    client_id

    Integrated service Client ID.

    client_assertion_type

    Type of the client assertion. Must be urn:ietf:params:oauth:client-assertion-type:jwt-bearer.

    client_assertion

    The client assertion. A signed JWT.

    Sample token request

    POST /api/oauth2/tokens HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Accept: application/json
    
    grant_type=client_credentials&
    client_id=12345&
    client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&
    client_assertion=eyJhb3ciOiJIUzI1NiJ9.eyJzdWIiOiI1N2I5MTQwNy02M4NkLTQxY2MtYjYzZS1mZGVjN5Y2MTFmOTQiLCJpc3MiOiJSZWFkU29mdE9ubGluZSIsImF1ZCI6Ikludm9pY2VQb3J0YWwiLCJleHAiOjE1NTkyNDI0ODgsIm5iZiI6MTU1OTI0MjQyOCwiaWF0IjoxNTU5MjQygDI4LCJqdGkiOiJiOWQ1ZjRhNC02NjZlLTQyOTEtYjBjNC1lYzdjOGZlMzllNzQifQ.5IQ-mvMYQKqlJx-viEB1dtsVamKicgD3ZxRBqTDw0QY
  8. Once the ID token is received, the identity of the user becomes clear to e-Invoice Connect.

    When client assertion is verified, integrated service issues ID token and sets the Bearer value as the token type. An ID token is a JSON Web Token signed by identity provider public key.

    Sample token response

    HTTP/1.1 200 OK
    Cache-Control: no-store, no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=UTF-8
    
    {
     "token_type": "Bearer",
     "expires_in": 60,
     "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ijg3MDdh3DI4NDQyOTQyYWRiNWY0NDEyNjE3YjU0YzkwIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxZmIxYmEzNjQ1Y2Q0ODQ5YmE2Y2QwNWVkYWNiY2ZkMiIsIm5hbWUiOiJPbGdhIFRvZ2lkbnlheWEiLCJlbWFpbCI6Im9sZ2EudG9naWRueWF5YUBrb2ZheC5jb20iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJPbGdhIFRvZ2lkbnlheWEgUmVhZFNvZnQiLCJodHRwczovL3dlYi5pbnZvaWNlcG9ydGFsLm5ldC9tZW1iZXIvaWQiOiIxODY1MCIsIm5iZiI6MTYyMTYwMjY0NSwiZXhwIjoxNjIxNjAyNjc1LCJpYXQiOjE2MjE2MDI2NjAsImlzcyI6Imh0dHBzOi8vc2VydmljZXMtZGV2LnJlYWRzb2Z0b25saW5lLmNvbS9vcGVuaWRjb25uZWN0L3Jlc3Qvb3BlbmlkIiwiYXVkIjoicXdlcnR5MTIzNDUifQ.wBvV4jLZSBNL8KFDsjw4seDn7EO0J6IyAXc7YujOgVpsdDh5EaJjutI6QXw3i8FXfGQ96Efq3sAqb52VmuCr-rhc-1Qywb2gbbzanQ0_HXk30AF0YIvMDIozg5nNcccpsXZA2Q0YfcCRTIF2vKXO-jzzDDv9j9JAe_T1yaBHqmlRQbKdbsoErsg5KZq05DA29mj1erMfyIABRcluGin8IXNGBWVoZMYsJY4DUGqg-16-ZRDwoEAbrhj4IGRdiV7J4LVy8MaxBCQBVFkzpQt_2TFY58E6yarmiNLFCSZlIZDLJmZEW-TrMk85C3hZ3pslBQdPRhXjEoD22zdd2H1NGHTJgpqPngYJa19SoXS8w6Hol0FH5P-1YKDqIaY6E2FVasrohFcBRWgQ1aTcFCN_7PNK0udxF75aOgvMkK34Z5MBMCYV2EtVkbjODFAXduSjbNf_Eldtboa3ibrRWu4rzhvo-1tgRM_tSrAPEHNh7mRWYsbRNqQLLwqSw4xMJ_1bNdAfYb_aG01dbzByTI4hXfzrelVxkt81PONVJHgnDlAcKroUrjCQ9CWHeHMO_FEKIRjD2r46j9mqGCl0ZxVsH2W_ZsrKZuXIPmCxxtXevfdrJP8Sbq4ysH6iKrbKu5Cv3cJ-b7OOcCy44Rh4WH7a1jGAEG8HKpDStS-xtMIA2Lg"
    }

    The returned ID token must contain claims with the user profile information and member id. e-Invoice Connect validates the ID token and response. ID token must contain sufficient information that lets e-Invoice Connect validate it. It must be signed and contain proper claims.

    Table 79. ID token claims
    Claim Description Meaning

    iss

    Issuer

    Identity provider Issuer identifier

    sub

    Subject

    Integrated service unique user GUID.

    aud

    Audience

    Client for which the assertion is issued. This must be the Integrated service client ID.

    exp

    Expiration Time

    Time until which the assertion is valid.

    nonce

    Nonce

    Short-living one-time-use nonce previously issued by e-Invoice Connect

    https://web.invoiceportal.net/member/id

    Member ID

    Custom claim for e-Invoice Connect Member ID verification

    name

    User Name

    User name

    email

    Email

    User email

    preferred_username

    Name

    User name

Pagination

If a collection is very large and may be difficult for the client to handle, it is often better to serve it divided into pages. Paging applies to collection resources only, and instead of returning all the resources with one request, each request only returns a chunk of the entire collection. The client is able to specify which chunk it is interested in and this is supported by means of the following query parameters.

Table 80. Pagination query parameters
Path Type Optional Description

page

Integer

true

Page you want to retrieve, 1 indexed and defaults to 1.

size

Integer

true

Size of the page you want to retrieve, defaults to 100.

Paged response has the following structure.

Table 81. Pagination response structure
Path Type Description

items

Array

Array of actual returned resources.

count

Integer

Actual size of content array (number of items).

page

Integer

Page number.

pages

Integer

Total number of pages with current page size.

total

Integer

Total number of existing items.

Extended query parameter

The q query parameter is supported by several collection resources, and is used by the client to search for resources in a collection. The value of the parameter must be a JSON object that describes the search criteria to be applied.

A simple equality form can be used to match resources where all the values of resource properties are equal to the values provided for them. The following example matches a party identifier resource that has the type of VAT, the country ID of US, and the identifier equal to XYZ.

Sample query
?q={"type":"VAT","countryId":"US","identifier":"XYZ"}

More complex search criteria can use comparison operators.

Table 82. Comparison operators
Operator Description Example

$eq

Specifies an equality condition. Matches the resources where the value of a property equals the specified value.

?q={"countryId" : {"$eq" : "SE"}}

$in

Specifies an equality condition. Matches the resources where the value of a property equals any value in the specified array of values.

?q={"status" : {"$in" : ["Received", "Pending"]}}

$gte

Specifies a greater than or equal condition. Matches the resources where the value of a property is greater than or equal (i.e. >=) to the specified value.

?q={"arrivedAt" : {"$gte":"2019-06-04T08:00:00Z""}}

$lte

Specifies a less than or equal condition. Matches the resources where the value of a property is less than or equal (i.e. ⇐) to the specified value.

?q={"arrivedAt" : {"$lte":"2019-06-04T08:00:00Z""}}

Dates used in extended queries should comply with ISO 8601.

Party identifier type

This is the list of party identifier type values returned and understood by the web service.

Type code Country Description

org

*

Organization number

VAT

*

VAT number

UBLBE

Belgium

UBL.BE Party Identifier

BE:EN

Belgium

Numero d’entreprise / ondernemingsnummer / Unternehmensnummer

BE:VAT

Belgium

Belgium VAT number

DK:CVR

Denmark

Danish (primary) organization number

DK:DIGST

Denmark

Danish (secondary) organization number

DK:P

Denmark

Danish P number (production unit)

DK:SE

Denmark

Danish (primary) VAT number

DK:ERST

Denmark

Danish (secondary) VAT number

FI:VAT

Finland

Finnish VAT number

FI:OVT

Finland

Finnish OVT (e-invoice party identifier)

FI:OVT2

Finland

Finnish TIEKE OVTcode

FI:YT

Finland

Finnish organization number

FR:SIRENE

France

French (primary) organization number

FR:SIRET

France

French (secondary) organization number

FR:VAT

France

French TVA (VAT number)

FR:ROUTING

France

CTC Routing Code

FR:SUFFIX

France

CTC Suffix

IT:IVA

Italy

Partita IVA (VAT number)

IT:CFI

Italy

Codice Fiscale (Tax number)

NO:ORGNR

Norway

Norwegian organization number

NO:VAT

Norway

Norwegian VAT number

SE:ORGNR

Sweden

Swedish organization number

SE:VAT

Sweden

Swedish VAT number

DUNS

-

DUNS number

GLN

-

Global Location Number from GS1

IBAN

-

International Bank Account Number

INTID

-

Internal identifier for companies and other entities

GSRN

-

Global Service Relation Number

ZZZ

-

Arbitrary identifier type agreed upon between parties

LEI

-

Legal Entity Identifier

EM

-

Email Identifier

Party identifier detailed type

In some cases detailed types for party identifiers might be same as in type code list above. For example, for Swedish organization number both type and detailed type are "SE:ORGNR".

For other cases majority of possible values will be according to Peppol Participant identifier schemes code list, with the exception of custom values created by e-Invoice Connect administrators.

Party identifier format

This is the list of party identifier types and their regexp formatting rules.

Type code Format rule

UBLBE

^.{4}.{0,46}$

BE:EN

^(([0,1])?([0-9]{3}\.){2}[0-9]{3})|([2-8]\.([0-9]{3}\.){2}[0-9]{3})|(([0,1])?[0-9]{9})|(([2-8])[0-9]{9})$

BE:VAT

^[Bb][Ee][01][0-9]{9}$

DK:CVR

^(([0-9]{2}-?){3}[0-9]{2})|([0-9]{6}-?[0-9]{4})$

DK:DIGST

^[0-9]{8}([0-9]{2})?$

DK:P

^[0-9]{10}$

DK:SE

^DK[0-9]{8}$

DK:ERST

^(DK)?[0-9]{8}|DK[0-9]{8}?$

FI:VAT

^FI[0-9]{8}?$

FI:OVT

^0037[0-9]{8}.{0,5}$

FI:OVT2

^0037[0-9]{8}.{0,5}$

FI:YT

^[0-9]{6,7}-[0-9]$

FR:SIRENE

^[0-9]{3}[ ,]?[0-9]{3}[ ,]?[0-9]{3}$

FR:SIRET

^[0-9]{3}[ ,]?[0-9]{3}[ ,]?[0-9]{3}[ ,]?[0-9]{5}$

FR:VAT

^FR[ ]?[A-Z0-9]{2}[ ,]?[0-9]{3}[ ,]?[0-9]{3}[ ,]?[0-9]{3}$

FR:ROUTING

^[a-zA-Z0-9_ ]+$ (composite: SIREN + SIRET + routing code, separated by _ or space or concatenated)

FR:SUFFIX

^[a-zA-Z0-9_ ]+$ (composite: SIREN + suffix, separated by _ or space or concatenated)

IT:IVA

^IT[0-9]{11}$

IT:CFI

^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$ for natural persons OR ^[0-9]{11}$ for companies

NO:ORGNR

^[0-9]{9}$

NO:VAT

^(NO)?[0-9]{9}(MVA)?$

SE:ORGNR

^[0-9]{6}-[0-9]{4}$

SE:VAT

^SE[0-9]{12}$

DUNS

^[0-9]{2}-?[0-9]{3}-?[0-9]{4}$

GLN

^[0-9]{13}$

IBAN

^[A-Z]{2}[A-Z0-9]{1,32}$

INTID

Free format depending on particular detailed type or company requirements

GSRN

^[0-9]{18}$

ZZZ

^[A-Z0-9]{6,255}$

Payment means type

This is the list of the supported payment means types with information about the properties that may be used with them.

Type name Properties Description

BANK

account, bankName, branchCode, swiftCode

Bank account

CARD

account, cardHolderName, cardNetworkId

Credit/bank card

CASH

-

Cash

DirectDebit

account, bankName, swiftCode

Direct debit

DK_FIK

account, subtype

Danish Joint Payment Form, FIK

DK_Giro

account, subtype

Danish giro

IBAN

account, bankName, swiftCode

International Bank Account Number

PaymentMandate

account, payerFinancialAccount, paymentMandate

Payment mandate

SE_BankGiro

account

Swedish BankGiro

SE_PlusGiro

account

Swedish PlusGiro

Collection sorting

The collection resource endpoints support the optional sort query parameter that defines how to sort the returned item collection.

The format for the sort parameter is a comma-separated list of item properties optionally followed by : and either asc or desc to specify whether the sorting order should be ascending or descending.

A sample sorting query parameter
?sort=status:asc,id:asc

The default sort direction is ascending.

Invoice type

This is the list of all possible values for invoice type code that e-Invoice Connect can accept and process.

Table 83. Invoice type codes
Code Name Description

Credit

Credit

Credit note invoice

Debit

Debit

Debit invoice

COR

Corrected invoice

Commercial invoice that includes revised information differing from an earlier submission of the same invoice

ADV

Payment in advance

Advance/down payment on invoice

ADVF

Advance on fee

Advance/down payment on fee

DN

Debit Note

Document/message for providing debit information to the relevant party

FEE

Fee

Fee

Invoice type codes specific for Italy. NOTE: code Debit should be used for SDI code TD01 and code Credit for TD04.

Invoice type codes starting from ITTD16 to ITTD27 are for documents that are subjects for e-reporting.

Code Name Description

ITTD16

Reverse charge

(For Italy only) Reverse charge internal invoice integration

ITTD17

Self-invoicing

(For Italy only) Invoice Integration / self-invoicing for the purchase services from abroad

ITTD18

Intra-EU goods

(For Italy only) Invoice Integration for purchase of intra-EU goods

ITTD19

Self-invoicing

(For Italy only) Integration/self-invoicing for purchase of goods (ex art.17 c.2 DPR 633/72)

ITTD20

Self-invoicing

(For Italy only) Self-invoicing for regularization and integration of invoices (ex art.6 c.8 and 9-bis d.lgs 471/97 or art.46 c.5 D.L. 331/93)

ITTD21

Self-invoicing

(For Italy only) Self-invoicing for splaphoning

ITTD22

Extraction of goods

(For Italy only) Extraction of goods from the VAT warehouse

ITTD23

Extraction of goods

(For Italy only) Extraction of goods from the VAT warehouse with payment of VAT

ITTD24

Deferred invoice

(For Italy only) Deferred invoice (ex art.21, c.4, lett. a)

ITTD25

Deferred invoice

(For Italy only) Deferred invoice (ex art.21, c.4, third period lett. b)

ITTD26

Internal transfer

(For Italy only) Sale of depreciable assets and for internal transfers (ex art.36 DPR 633/72)

ITTD27

Self-invoicing

(For Italy only) Self invoicing for self-consumption or for free charge invoice with VAT application

ITTD28

Purchases from San Marino

(For Italy only) Purchases from San Marino with VAT (paper invoice)

ITTD29

Irregular invoicing

(For Italy only) Communication for omitted or irregular invoicing (article 6, paragraph 8, Legislative Decree 471/97)

Invoice type codes specific for Poland.

Code Name Description

PLZAL

Receipt document

(For Poland only) An invoice documenting the receipt of payment or a part thereof prior to the performance of the activity and an invoice issued in connection with Art. 106f sec. 4 of the act

PLROZ

Settlement invoice

(For Poland only) An invoice issued in connection with art. 106f sec. 3 of the act

PLUPR

Simplified invoice

(For Poland only) An invoice issued in connection to article 106e sec. 5 item 3 of the act

PLKOR_ZAL

Correction to receipt document

(For Poland only) Invoice correcting the invoice documenting the receipt of the payment or its part before performing the activity and the invoice issued in connection with art. 106f sec. 4 of the act

PLKOR_ROZ

Correction to settlement invoice

(For Poland only) Invoice correcting the invoice issued in connection with art. 106f sec. 3 of the act

Invoice status

This is the list of statuses that the incoming invoices processed by e-Invoice Connect can have.

Table 84. Incoming invoice statuses
Status Description

Received

An invoice that is initially processed by the service and has passed validation. Or a former invalid invoice that has been accepted by an explicit request.

Pending

An invalid invoice that is initially processed by the service but has not passed validation and has errors.

Rejected

An invalid invoice that has been rejected either automatically or by an explicit request to reject it.

Corrected

An invalid invoice that has been replaced by a valid one having the same invoice number.

Additionally, incoming invoices may have the following business-level statuses, which can be set by the recipients or suppliers.

Table 85. Business-level statuses
Status Description

Delivered

Indicates that the invoice has been received but not yet processed.

Queried

Indicates that the invoice is on hold due to a query or pending clarification.

Invalidated

Indicates that the invoice was identified as incorrect by the recipient during business validation.

Verified

Indicates that the invoice details have been verified and confirmed.

ConditionallyAccepted

Indicates that the invoice is accepted with conditions or pending adjustments.

Approved

Indicates that the invoice has been approved for payment.

Paid

Indicates that the invoice has been fully paid. This status is final.

Rejected

Indicates that the invoice has been rejected by the recipient. This status is final.

Acknowledged

Indicates that the invoice has been acknowledged by the recipient.

PartiallyApproved

Indicates that the invoice has been partially approved by the recipient.

Completed

Indicates that the invoice has been marked as completed by the supplier.

PaymentCollected

Indicates that payment has been collected by the supplier.

Integrated service request status

This is the list of all possible statuses that the integrated service requests can have.

Table 86. Integrated service request statuses
Status Description

Active

Awaiting state, not expired, no response received yet.

Awaiting

Awaiting state, not expired, response received but multipart data is being awaited.

Responded

Response received.

Failed

Response received but possibly was invalid.

Expired

Request timed out with either no response at all or multipart data not received in a timely manner.

Party upload status

This is the list of all possible statuses that the party upload requests can have.

Table 87. Party upload statuses
Status Description

Accepted

Upload is accepted.

Awaiting

Upload is accepted but multipart data is being awaited.

Expired

Multipart data not received in a timely manner.

Processing

Processing job started.

Failed

Processing failed.

Processed

Processing completed successfully.

Invoice attachment document types

This is the list of possible document types that the invoice attachment can have. Most of specific types will be provided only for invoices that went trough clearance procedure with clearance service provider.

Table 88. Invoice attachment document types
Attachment type Description

Regular

Regular attachment related to the invoice, can be a number of formats (pdf, xml etc.).

OriginalInvoice

Original invoice document.

LegalDocument

Legal document provided by clearance operator.

Receipt

Confirmation of receipt. An acknowledgement receipt issued by government, operator or clearance service provider.

InvoiceImage

Image of an invoice (usually a PDF representation) provided by clearance service provider/operator.

Metadata

Additional delivery or processing information provided by a clearance operator.

DeliveryNotice

Delivery confirmation notice provided by a clearance operator signifying that the invoice was delivered to a recipient.

RejectionNotice

Rejection notification provided by a clearance operator.

FailedDeliveryNotice

Failed delivery notification provided by a clearance operator signifying that invoice was accepted and processed but delivery to a recipient has failed.

QRCodeLink

The URL encoded in the QR code that links to invoice verification on the tax authority portal.

Invoice statistic request status

This is the list of all possible statuses that the invoice statistic requests can have.

Table 89. Invoice statistic request statuses
Status Description

Pending

Request is pending.

Completed

Request is processed and statistic report is completed.

Failed

Processing failed.