For the complete documentation index, see llms.txt. This page is also available as Markdown.

Credit Note APIs

Operations related to CreditNotes

Get incoming credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/creditnotes/incoming

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

To get new messages only, use the "Read" endpoint instead!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/creditnotes/incoming
GET /transaction/{accountRegNo}/creditnotes/incoming HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Create incoming credit notes [transaction-type: CreditNote]

post
/transaction/{accountRegNo}/creditnotes/incoming

The request can be either JSON or XML. Each individual message must be POST'ed as an object, JSON Array is not suported!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
overwritebooleanOptional

For POST requests, chose to overwrite upon a 409 Conflict response to reprocess the message with the same document ID and receiver (i.e. send the same message again)

Default: falseExample: false
Header parameters
Idempotency-Keystring · min: 8 · max: 255Optional

Optional. Send a unique value you generate per submission (a UUID is recommended!) and a repeat of the same request returns the original response, with the original integrationId, instead of creating a second document.

This is what makes a submission safe to retry after a timeout: if the connection breaks after we accept the POST but before the response reaches you, repeating it with the same key tells you whether the document was created, without a reconciling GET.

  • Same key, same body, request finished: the original response is replayed.
  • Same key, same body, original still in flight: 409.
  • Same key, different body: 400.
  • Key older than 24 hours: treated as new.

A request that fails releases its key, so you can retry the same key after an error. Keys are scoped to your account.

Example: b7f3a1c2-9d4e-4f5a-8b6c-1d2e3f4a5b6cPattern: ^[\w.:@+-]+$
Body
CreditNoteobjectOptional
Responses
200

OK

statusstringOptionalExample: success
post/transaction/{accountRegNo}/creditnotes/incoming
POST /transaction/{accountRegNo}/creditnotes/incoming HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "CreditNote": {}
}
{
  "status": "success",
  "data": {
    "message": "Invoice 100-1000 sent",
    "integrationId": "4725a033-e501-4e2f-afa5-3a5c24eb5e28",
    "ANY_ADDITIONAL_PROPERTY": "100-1000"
  }
}

Read incoming credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/creditnotes/incoming/readcreditnotes

Through this endpoint you will get any unread (=previously fetched) message(s). After you have fetched through this request the message will be automatically marked as read

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
markUnreadbooleanOptional

Release previously read documents back to the unread pool: selects documents that HAVE been read, clears their read mark, and returns them. The next call to this endpoint will hand them out again.

Use it to recover when a document was read but the hand-off downstream failed — there is one read mark per document per account, not a per-consumer cursor, so without this a document is delivered exactly once and cannot be re-requested.

Must be scoped. Combine it with at least one of integrationId, documentId, from or updatedAtFrom; an unscoped call is rejected with 400, because it would clear the account's entire read state and re-deliver its full history on the next read. limit and offset do not count as scoping.

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/creditnotes/incoming/readcreditnotes
GET /transaction/{accountRegNo}/creditnotes/incoming/readcreditnotes HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Get outgoing credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/creditnotes/outgoing

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

To get new messages only, use the "Read" endpoint instead!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/creditnotes/outgoing
GET /transaction/{accountRegNo}/creditnotes/outgoing HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Create outgoing credit notes [transaction-type: CreditNote]

post
/transaction/{accountRegNo}/creditnotes/outgoing

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

To get new messages only, use the "Read" endpoint instead!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
overwritebooleanOptional

For POST requests, chose to overwrite upon a 409 Conflict response to reprocess the message with the same document ID and receiver (i.e. send the same message again)

Default: falseExample: false
Header parameters
Idempotency-Keystring · min: 8 · max: 255Optional

Optional. Send a unique value you generate per submission (a UUID is recommended!) and a repeat of the same request returns the original response, with the original integrationId, instead of creating a second document.

This is what makes a submission safe to retry after a timeout: if the connection breaks after we accept the POST but before the response reaches you, repeating it with the same key tells you whether the document was created, without a reconciling GET.

  • Same key, same body, request finished: the original response is replayed.
  • Same key, same body, original still in flight: 409.
  • Same key, different body: 400.
  • Key older than 24 hours: treated as new.

A request that fails releases its key, so you can retry the same key after an error. Keys are scoped to your account.

Example: b7f3a1c2-9d4e-4f5a-8b6c-1d2e3f4a5b6cPattern: ^[\w.:@+-]+$
Body
CreditNoteobjectOptional
Responses
200

OK

statusstringOptionalExample: success
post/transaction/{accountRegNo}/creditnotes/outgoing
POST /transaction/{accountRegNo}/creditnotes/outgoing HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "CreditNote": {}
}
{
  "status": "success",
  "data": {
    "message": "Invoice 100-1000 sent",
    "integrationId": "4725a033-e501-4e2f-afa5-3a5c24eb5e28",
    "ANY_ADDITIONAL_PROPERTY": "100-1000"
  }
}

Read outgoing credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/creditnotes/outgoing/readcreditnotes

Through this endpoint you will get any unread (=previously fetched) message(s). After you have fetched through this request the message will be automatically marked as read

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
markUnreadbooleanOptional

Release previously read documents back to the unread pool: selects documents that HAVE been read, clears their read mark, and returns them. The next call to this endpoint will hand them out again.

Use it to recover when a document was read but the hand-off downstream failed — there is one read mark per document per account, not a per-consumer cursor, so without this a document is delivered exactly once and cannot be re-requested.

Must be scoped. Combine it with at least one of integrationId, documentId, from or updatedAtFrom; an unscoped call is rejected with 400, because it would clear the account's entire read state and re-deliver its full history on the next read. limit and offset do not count as scoping.

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/creditnotes/outgoing/readcreditnotes
GET /transaction/{accountRegNo}/creditnotes/outgoing/readcreditnotes HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Get incoming self billing credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/selfbillingcreditnotes/incoming

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

To get new messages only, use the "Read" endpoint instead!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/selfbillingcreditnotes/incoming
GET /transaction/{accountRegNo}/selfbillingcreditnotes/incoming HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Create incoming self billing credit notes [transaction-type: CreditNote]

post
/transaction/{accountRegNo}/selfbillingcreditnotes/incoming

The request can be either JSON or XML. Each individual message must be POST'ed as an object, JSON Array is not suported!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
overwritebooleanOptional

For POST requests, chose to overwrite upon a 409 Conflict response to reprocess the message with the same document ID and receiver (i.e. send the same message again)

Default: falseExample: false
Header parameters
Idempotency-Keystring · min: 8 · max: 255Optional

Optional. Send a unique value you generate per submission (a UUID is recommended!) and a repeat of the same request returns the original response, with the original integrationId, instead of creating a second document.

This is what makes a submission safe to retry after a timeout: if the connection breaks after we accept the POST but before the response reaches you, repeating it with the same key tells you whether the document was created, without a reconciling GET.

  • Same key, same body, request finished: the original response is replayed.
  • Same key, same body, original still in flight: 409.
  • Same key, different body: 400.
  • Key older than 24 hours: treated as new.

A request that fails releases its key, so you can retry the same key after an error. Keys are scoped to your account.

Example: b7f3a1c2-9d4e-4f5a-8b6c-1d2e3f4a5b6cPattern: ^[\w.:@+-]+$
Body
CreditNoteobjectOptional
Responses
200

OK

statusstringOptionalExample: success
post/transaction/{accountRegNo}/selfbillingcreditnotes/incoming
POST /transaction/{accountRegNo}/selfbillingcreditnotes/incoming HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "CreditNote": {}
}
{
  "status": "success",
  "data": {
    "message": "Invoice 100-1000 sent",
    "integrationId": "4725a033-e501-4e2f-afa5-3a5c24eb5e28",
    "ANY_ADDITIONAL_PROPERTY": "100-1000"
  }
}

Read incoming self billing credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/selfbillingcreditnotes/incoming/readselfbillingcreditnotes

Through this endpoint you will get any unread (=previously fetched) message(s). After you have fetched through this request the message will be automatically marked as read

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
markUnreadbooleanOptional

Release previously read documents back to the unread pool: selects documents that HAVE been read, clears their read mark, and returns them. The next call to this endpoint will hand them out again.

Use it to recover when a document was read but the hand-off downstream failed — there is one read mark per document per account, not a per-consumer cursor, so without this a document is delivered exactly once and cannot be re-requested.

Must be scoped. Combine it with at least one of integrationId, documentId, from or updatedAtFrom; an unscoped call is rejected with 400, because it would clear the account's entire read state and re-deliver its full history on the next read. limit and offset do not count as scoping.

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/selfbillingcreditnotes/incoming/readselfbillingcreditnotes
GET /transaction/{accountRegNo}/selfbillingcreditnotes/incoming/readselfbillingcreditnotes HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Get outgoing self billing credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

To get new messages only, use the "Read" endpoint instead!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing
GET /transaction/{accountRegNo}/selfbillingcreditnotes/outgoing HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Create outgoing self billing credit notes [transaction-type: CreditNote]

post
/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

To get new messages only, use the "Read" endpoint instead!

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
overwritebooleanOptional

For POST requests, chose to overwrite upon a 409 Conflict response to reprocess the message with the same document ID and receiver (i.e. send the same message again)

Default: falseExample: false
Header parameters
Idempotency-Keystring · min: 8 · max: 255Optional

Optional. Send a unique value you generate per submission (a UUID is recommended!) and a repeat of the same request returns the original response, with the original integrationId, instead of creating a second document.

This is what makes a submission safe to retry after a timeout: if the connection breaks after we accept the POST but before the response reaches you, repeating it with the same key tells you whether the document was created, without a reconciling GET.

  • Same key, same body, request finished: the original response is replayed.
  • Same key, same body, original still in flight: 409.
  • Same key, different body: 400.
  • Key older than 24 hours: treated as new.

A request that fails releases its key, so you can retry the same key after an error. Keys are scoped to your account.

Example: b7f3a1c2-9d4e-4f5a-8b6c-1d2e3f4a5b6cPattern: ^[\w.:@+-]+$
Body
CreditNoteobjectOptional
Responses
200

OK

statusstringOptionalExample: success
post/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing
POST /transaction/{accountRegNo}/selfbillingcreditnotes/outgoing HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "CreditNote": {}
}
{
  "status": "success",
  "data": {
    "message": "Invoice 100-1000 sent",
    "integrationId": "4725a033-e501-4e2f-afa5-3a5c24eb5e28",
    "ANY_ADDITIONAL_PROPERTY": "100-1000"
  }
}

Read outgoing self billing credit notes [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing/readselfbillingcreditnotes

Through this endpoint you will get any unread (=previously fetched) message(s). After you have fetched through this request the message will be automatically marked as read

The response, in JSON, will always include the three latest messages, per default. Using XML you always only get one (as there's no "array" function for XML).

With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available messages.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
markUnreadbooleanOptional

Release previously read documents back to the unread pool: selects documents that HAVE been read, clears their read mark, and returns them. The next call to this endpoint will hand them out again.

Use it to recover when a document was read but the hand-off downstream failed — there is one read mark per document per account, not a per-consumer cursor, so without this a document is delivered exactly once and cannot be re-requested.

Must be scoped. Combine it with at least one of integrationId, documentId, from or updatedAtFrom; an unscoped call is rejected with 400, because it would clear the account's entire read state and re-deliver its full history on the next read. limit and offset do not count as scoping.

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

get/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing/readselfbillingcreditnotes
GET /transaction/{accountRegNo}/selfbillingcreditnotes/outgoing/readselfbillingcreditnotes HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "text",
      "ANY_ADDITIONAL_PROPERTY": {}
    }
  ]
}

Get incoming credit note statuses [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/creditnotes/incoming/status

Returns lightweight delivery/processing status metadata for the matching messages — the message integrationId and globalTransactionId, the incoming readAt timestamp and a metadata object whose status reflects the latest message-log status and whose webhooks_dispatched lists every webhook delivery attempt — WITHOUT the heavy document payload.

A delivery that failed can be fetched again, for 30 days, by the eventId listed for it — see GET /account/{accountRegNo}/webhook/{eventId} in the Account API.

Uses the same query-string filters as the resource's GET on /incoming and /outgoing. By default only unread messages are returned; set includeRead=true to also include previously read messages.

The response is always JSON (an array of status objects); there is no XML representation for this endpoint.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

application/json
statusstringOptionalExample: success
get/transaction/{accountRegNo}/creditnotes/incoming/status
GET /transaction/{accountRegNo}/creditnotes/incoming/status HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "29cca64f-a7dd-49fa-a5f4-29f157d9fbc0",
      "globalTransactionId": "9b0896ae-e18f-442b-8378-bd445298c7e8",
      "readAt": null,
      "metadata": {
        "status": {
          "event": "message-log/update",
          "status": "processed",
          "deliveryMethod": "peppol",
          "updatedAt": "2026-09-29T06:36:42.622Z"
        },
        "webhooks_dispatched": [
          {
            "eventId": "f455a5d6-b94f-5908-b835-7a1cf67d438f",
            "eventType": "new_document",
            "success": false,
            "status": 502,
            "statusText": "Bad Gateway",
            "signed": false,
            "occurredAt": "2026-09-29T06:36:11.997Z",
            "dispatchedAt": "2026-09-29T06:36:12.579Z"
          },
          {
            "eventId": "fd69b5eb-4386-5cce-a478-6e3dd1d85857",
            "eventType": "document_delivery",
            "success": true,
            "status": 200,
            "statusText": "OK",
            "signed": true,
            "occurredAt": "2026-09-29T06:36:42.458Z",
            "dispatchedAt": "2026-09-29T06:36:43.043Z"
          }
        ]
      }
    }
  ]
}

Get outgoing credit note statuses [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/creditnotes/outgoing/status

Returns lightweight delivery/processing status metadata for the matching messages — the message integrationId and globalTransactionId, the incoming readAt timestamp and a metadata object whose status reflects the latest message-log status and whose webhooks_dispatched lists every webhook delivery attempt — WITHOUT the heavy document payload.

A delivery that failed can be fetched again, for 30 days, by the eventId listed for it — see GET /account/{accountRegNo}/webhook/{eventId} in the Account API.

Uses the same query-string filters as the resource's GET on /incoming and /outgoing. By default only unread messages are returned; set includeRead=true to also include previously read messages.

The response is always JSON (an array of status objects); there is no XML representation for this endpoint.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

application/json
statusstringOptionalExample: success
get/transaction/{accountRegNo}/creditnotes/outgoing/status
GET /transaction/{accountRegNo}/creditnotes/outgoing/status HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "29cca64f-a7dd-49fa-a5f4-29f157d9fbc0",
      "globalTransactionId": "9b0896ae-e18f-442b-8378-bd445298c7e8",
      "readAt": null,
      "metadata": {
        "status": {
          "event": "message-log/update",
          "status": "processed",
          "deliveryMethod": "peppol",
          "updatedAt": "2026-09-29T06:36:42.622Z"
        },
        "webhooks_dispatched": [
          {
            "eventId": "f455a5d6-b94f-5908-b835-7a1cf67d438f",
            "eventType": "new_document",
            "success": false,
            "status": 502,
            "statusText": "Bad Gateway",
            "signed": false,
            "occurredAt": "2026-09-29T06:36:11.997Z",
            "dispatchedAt": "2026-09-29T06:36:12.579Z"
          },
          {
            "eventId": "fd69b5eb-4386-5cce-a478-6e3dd1d85857",
            "eventType": "document_delivery",
            "success": true,
            "status": 200,
            "statusText": "OK",
            "signed": true,
            "occurredAt": "2026-09-29T06:36:42.458Z",
            "dispatchedAt": "2026-09-29T06:36:43.043Z"
          }
        ]
      }
    }
  ]
}

Get incoming self billing credit note statuses [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/selfbillingcreditnotes/incoming/status

Returns lightweight delivery/processing status metadata for the matching messages — the message integrationId and globalTransactionId, the incoming readAt timestamp and a metadata object whose status reflects the latest message-log status and whose webhooks_dispatched lists every webhook delivery attempt — WITHOUT the heavy document payload.

A delivery that failed can be fetched again, for 30 days, by the eventId listed for it — see GET /account/{accountRegNo}/webhook/{eventId} in the Account API.

Uses the same query-string filters as the resource's GET on /incoming and /outgoing. By default only unread messages are returned; set includeRead=true to also include previously read messages.

The response is always JSON (an array of status objects); there is no XML representation for this endpoint.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

application/json
statusstringOptionalExample: success
get/transaction/{accountRegNo}/selfbillingcreditnotes/incoming/status
GET /transaction/{accountRegNo}/selfbillingcreditnotes/incoming/status HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "29cca64f-a7dd-49fa-a5f4-29f157d9fbc0",
      "globalTransactionId": "9b0896ae-e18f-442b-8378-bd445298c7e8",
      "readAt": null,
      "metadata": {
        "status": {
          "event": "message-log/update",
          "status": "processed",
          "deliveryMethod": "peppol",
          "updatedAt": "2026-09-29T06:36:42.622Z"
        },
        "webhooks_dispatched": [
          {
            "eventId": "f455a5d6-b94f-5908-b835-7a1cf67d438f",
            "eventType": "new_document",
            "success": false,
            "status": 502,
            "statusText": "Bad Gateway",
            "signed": false,
            "occurredAt": "2026-09-29T06:36:11.997Z",
            "dispatchedAt": "2026-09-29T06:36:12.579Z"
          },
          {
            "eventId": "fd69b5eb-4386-5cce-a478-6e3dd1d85857",
            "eventType": "document_delivery",
            "success": true,
            "status": 200,
            "statusText": "OK",
            "signed": true,
            "occurredAt": "2026-09-29T06:36:42.458Z",
            "dispatchedAt": "2026-09-29T06:36:43.043Z"
          }
        ]
      }
    }
  ]
}

Get outgoing self billing credit note statuses [transaction-type: CreditNote]

get
/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing/status

Returns lightweight delivery/processing status metadata for the matching messages — the message integrationId and globalTransactionId, the incoming readAt timestamp and a metadata object whose status reflects the latest message-log status and whose webhooks_dispatched lists every webhook delivery attempt — WITHOUT the heavy document payload.

A delivery that failed can be fetched again, for 30 days, by the eventId listed for it — see GET /account/{accountRegNo}/webhook/{eventId} in the Account API.

Uses the same query-string filters as the resource's GET on /incoming and /outgoing. By default only unread messages are returned; set includeRead=true to also include previously read messages.

The response is always JSON (an array of status objects); there is no XML representation for this endpoint.

Authorizations
AuthorizationstringRequired
Path parameters
accountRegNostringRequired

Account registration number issued by Qvalia

Default: ""
Query parameters
limitnumberOptional

How many messages to return in Array (XML is always one!)

Default: 3Example: 5
offsetnumberOptional

Where to start index for using limit/offset listing

Default: 0Example: 0
includeReadbooleanOptional

If you are using the "read" enpoints, make it include previously read messages

Default: falseExample: false
integrationIdstringOptional

Qvalia unique identifier for the transaction/message

Default: ""
documentIdstringOptional

The document identifier of teh message, e.g. Invoice number

Default: ""
fromstringOptional

Filter on creation date, from this date inclusive. YYYY-MM-DD is the documented and recommended form; any unambiguous date string the server can parse is accepted, but only YYYY-MM-DD is guaranteed to keep working. The whole day is included.

Example: 2024-01-01
tostringOptional

Filter on creation date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Example: 2024-01-31
updatedAtFromstringOptional

Filter on last-updated date, from this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

NB! If you send updatedAtFrom without updatedAtTo, updatedAtTo defaults to today — the range is not open-ended. Send updatedAtTo explicitly if you need a different end date.

Example: 2024-01-01
updatedAtTostringOptional

Filter on last-updated date, to this date inclusive. YYYY-MM-DD is the documented and recommended form. The whole day is included.

Defaults to today when updatedAtFrom is supplied without it.

Example: 2024-01-31
Responses
200

OK

application/json
statusstringOptionalExample: success
get/transaction/{accountRegNo}/selfbillingcreditnotes/outgoing/status
GET /transaction/{accountRegNo}/selfbillingcreditnotes/outgoing/status HTTP/1.1
Host: api-test.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
  "status": "success",
  "data": [
    {
      "integrationId": "29cca64f-a7dd-49fa-a5f4-29f157d9fbc0",
      "globalTransactionId": "9b0896ae-e18f-442b-8378-bd445298c7e8",
      "readAt": null,
      "metadata": {
        "status": {
          "event": "message-log/update",
          "status": "processed",
          "deliveryMethod": "peppol",
          "updatedAt": "2026-09-29T06:36:42.622Z"
        },
        "webhooks_dispatched": [
          {
            "eventId": "f455a5d6-b94f-5908-b835-7a1cf67d438f",
            "eventType": "new_document",
            "success": false,
            "status": 502,
            "statusText": "Bad Gateway",
            "signed": false,
            "occurredAt": "2026-09-29T06:36:11.997Z",
            "dispatchedAt": "2026-09-29T06:36:12.579Z"
          },
          {
            "eventId": "fd69b5eb-4386-5cce-a478-6e3dd1d85857",
            "eventType": "document_delivery",
            "success": true,
            "status": 200,
            "statusText": "OK",
            "signed": true,
            "occurredAt": "2026-09-29T06:36:42.458Z",
            "dispatchedAt": "2026-09-29T06:36:43.043Z"
          }
        ]
      }
    }
  ]
}

Last updated

Was this helpful?