Partner API
Operations related to Qvalia Partners
An API to fetch (GET) Qvalia accounts under your Partner account.
With JSON, use the limit parameter to change the number of returned messages and combine it with offset to traverse through your available records.
Partner registration number issued by Qvalia
How many records to return in Array (default is 25)
25Example: 5Where to start index for using limit/offset listing
0Example: 0OK
successNo Content
Unauthorized
Internal Server Error
GET /partner/{partnerRegNo}/account HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"accounts": [
{
"accountRegNo": "SE1234567890",
"vatNumber": "SE123456789001",
"name": "A company AB",
"email": "john.doe@acompany.com",
"address": "A street name 123",
"additionalAddress": "c/o My mailbox",
"boxAddress": "Box 123",
"postalCode": "123 45",
"country": "SE",
"city": "Stockholm",
"currency": "SEK",
"vat": 25,
"website": "https://www.myweb.com",
"invoiceEmail": "invoices@myweb.com",
"invoicePhone": "+468123456",
"OurReference": "Finance Person",
"appFeatures": {
"whiteLabel": {
"active": true,
"wl_partners": [
"wl_acme_partner"
]
},
"invoiceManagement": {
"active": true
},
"orderManagement": {
"active": true
},
"catalogueManagement": {
"active": true
},
"analytics": {
"active": true
},
"prePosting": {
"active": true
},
"capture": {
"active": true
},
"unspscClassification": {
"active": true
},
"clarityAI": {
"active": true
},
"co2Emission": {
"active": true
},
"workflow": {
"active": true
},
"apiIntegration": {
"active": true
},
"sftpIntegration": {
"active": true
},
"reconciliation": {
"active": true
}
}
}
],
"total": 1
}
}Partner registration number issued by Qvalia
SE1234567890This is normally EU VAT number used for creating supplier invoices
SE123456789001A company ABjohn.doe@acompany.comA street name 123c/o My mailboxBox 123123 45SEPattern: ^[A-Z]{2}$StockholmSEKThis is the default VAT rate used for creating supplier invoices
25This is used in page footer of PDF supplier invoices
https://www.myweb.comThis is used in page footer of PDF supplier invoices
invoices@myweb.comThis is used in page footer of PDF supplier invoices
+468123456This is used in page footer of PDF supplier invoices
Finance PersonOK
account SE1234567890 created for partner SE9876543210Unauthorized
Conflict
Unprocessable Entity
Internal Server Error
POST /partner/{partnerRegNo}/account HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 910
{
"accountRegNo": "SE1234567890",
"vatNumber": "SE123456789001",
"name": "A company AB",
"email": "john.doe@acompany.com",
"address": "A street name 123",
"additionalAddress": "c/o My mailbox",
"boxAddress": "Box 123",
"postalCode": "123 45",
"country": "SE",
"city": "Stockholm",
"currency": "SEK",
"vat": 25,
"website": "https://www.myweb.com",
"invoiceEmail": "invoices@myweb.com",
"invoicePhone": "+468123456",
"OurReference": "Finance Person",
"appFeatures": {
"whiteLabel": {
"active": true,
"wl_partners": [
"wl_acme_partner"
]
},
"invoiceManagement": {
"active": true
},
"orderManagement": {
"active": true
},
"catalogueManagement": {
"active": true
},
"analytics": {
"active": true
},
"prePosting": {
"active": true
},
"capture": {
"active": true
},
"unspscClassification": {
"active": true
},
"clarityAI": {
"active": true
},
"co2Emission": {
"active": true
},
"workflow": {
"active": true
},
"apiIntegration": {
"active": true
},
"sftpIntegration": {
"active": true
},
"reconciliation": {
"active": true
}
}
}{
"success": "account SE1234567890 created for partner SE9876543210"
}An API to fetch (GET) a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
OK
successNo Content
Unauthorized
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"accountRegNo": "SE1234567890",
"vatNumber": "SE123456789001",
"name": "A company AB",
"email": "john.doe@acompany.com",
"address": "A street name 123",
"additionalAddress": "c/o My mailbox",
"boxAddress": "Box 123",
"postalCode": "123 45",
"country": "SE",
"city": "Stockholm",
"currency": "SEK",
"vat": 25,
"website": "https://www.myweb.com",
"invoiceEmail": "invoices@myweb.com",
"invoicePhone": "+468123456",
"OurReference": "Finance Person",
"appFeatures": {
"whiteLabel": {
"active": true,
"wl_partners": [
"wl_acme_partner"
]
},
"invoiceManagement": {
"active": true
},
"orderManagement": {
"active": true
},
"catalogueManagement": {
"active": true
},
"analytics": {
"active": true
},
"prePosting": {
"active": true
},
"capture": {
"active": true
},
"unspscClassification": {
"active": true
},
"clarityAI": {
"active": true
},
"co2Emission": {
"active": true
},
"workflow": {
"active": true
},
"apiIntegration": {
"active": true
},
"sftpIntegration": {
"active": true
},
"reconciliation": {
"active": true
}
}
}
}Partner registration number issued by Qvalia
Account registration number issued by Qvalia
This is normally EU VAT number used for creating supplier invoices
SE123456789001A company ABjohn.doe@acompany.comA street name 123c/o My mailboxBox 123123 45SEPattern: ^[A-Z]{2}$StockholmSEKThis is the default VAT rate used for creating supplier invoices
25This is used in page footer of PDF supplier invoices
https://www.myweb.comThis is used in page footer of PDF supplier invoices
invoices@myweb.comThis is used in page footer of PDF supplier invoices
+468123456This is used in page footer of PDF supplier invoices
Finance PersonOK
account SE1234567890 updated for partner SE9876543210Unauthorized
Not Found
Unprocessable Entity
Internal Server Error
PUT /partner/{partnerRegNo}/account/{accountRegNo} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 880
{
"vatNumber": "SE123456789001",
"name": "A company AB",
"email": "john.doe@acompany.com",
"address": "A street name 123",
"additionalAddress": "c/o My mailbox",
"boxAddress": "Box 123",
"postalCode": "123 45",
"country": "SE",
"city": "Stockholm",
"currency": "SEK",
"vat": 25,
"website": "https://www.myweb.com",
"invoiceEmail": "invoices@myweb.com",
"invoicePhone": "+468123456",
"OurReference": "Finance Person",
"appFeatures": {
"whiteLabel": {
"active": true,
"wl_partners": [
"wl_acme_partner"
]
},
"invoiceManagement": {
"active": true
},
"orderManagement": {
"active": true
},
"catalogueManagement": {
"active": true
},
"analytics": {
"active": true
},
"prePosting": {
"active": true
},
"capture": {
"active": true
},
"unspscClassification": {
"active": true
},
"clarityAI": {
"active": true
},
"co2Emission": {
"active": true
},
"workflow": {
"active": true
},
"apiIntegration": {
"active": true
},
"sftpIntegration": {
"active": true
},
"reconciliation": {
"active": true
}
}
}{
"success": "account SE1234567890 updated for partner SE9876543210"
}An API to fetch (GET) Qvalia users in an account, under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
OK
successNo Content
Unauthorized
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo}/user HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"accountRegNo": "SE1234567890",
"users": [
{
"email": "user@qvalia.com",
"name": "text",
"privilege": "viewer",
"phone": "text",
"language": "text",
"title": "text",
"countryCode": "SE"
}
]
}
}An API to add (POST) a User to a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
user@qvalia.com^(viewer|user|admin)$Possible values: ^[en|sv|fi]$Possible values: OK
successUnauthorized
Conflict
Unprocessable Entity
Internal Server Error
POST /partner/{partnerRegNo}/account/{accountRegNo}/user HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 108
{
"email": "user@qvalia.com",
"name": "text",
"privilege": "viewer",
"phone": "text",
"language": "en",
"title": "text"
}{
"status": "success",
"data": {
"success": "User users@qvalia.com added to account SE1234567890 for partner SE9876543210"
}
}An API to fetch (GET) a Qvalia user in an account, under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
User email for the account, e.g. "user@qvalia.com"
OK
successNo Content
Unauthorized
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo}/user/{userEmail} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"accountRegNo": "SE1234567890",
"user": {
"email": "user@qvalia.com",
"name": "text",
"privilege": "viewer",
"phone": "text",
"language": "text",
"title": "text",
"countryCode": "SE"
}
}
}An API to update (PUT) a User to a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
User email for the account, e.g. "user@qvalia.com"
^(viewer|user|admin)$Possible values: SEPattern: ^[A-Z]{2}$OK
successUnauthorized
Not Found
Unprocessable Entity
Internal Server Error
PUT /partner/{partnerRegNo}/account/{accountRegNo}/user/{userEmail} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 103
{
"name": "text",
"privilege": "viewer",
"phone": "text",
"language": "text",
"title": "text",
"countryCode": "SE"
}{
"status": "success",
"data": {
"success": "User users@qvalia.com updated for account SE1234567890 for partner SE9876543210"
}
}An API to DELETE a User from a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
User email for the account, e.g. "user@qvalia.com"
OK
successUnauthorized
Not Found
Internal Server Error
DELETE /partner/{partnerRegNo}/account/{accountRegNo}/user/{userEmail} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"success": "User deleted from account SE1234567890 for partner SE9876543210"
}
}An API to fetch (GET) bankaccounts in an account, under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
OK
successNo Content
Unauthorized
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo}/bankaccount HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"accountRegNo": "SE1234567890",
"bankAccounts": [
{
"account_name": "text",
"type": "text",
"account_number": "text",
"is_default": true,
"description": "text",
"bic": "text",
"bank_name": "text",
"bank_address": "text",
"bank_postal_code": "text",
"bank_city": "text",
"bank_country": "text"
}
]
}
}An API to add (POST) a Bankaccount to a Qvalia account under your Partner account.
The bank account for the partner account is used when/if a partner account generates/creates an invoice in Qvalia Apps. If your customer don't have access to Qvalia standard App, e.g. you are using a White Label solution, the bank account marked as is_default will be used (and only one default account may exist!).
For Swedish companies (country: SE) Plusgiro and Bankgiro are allowed as type, for any other country either IBAN or AccountNumber should be used!
The type AccountNumber shall be used for any unspecified, and local, bank accounts (i.e. that's not IBAN, Bankgiro or Plusgiro)
The account_number attribute is used for all account types, and for IBAN it must start with the country code, e.g. SE4550000000058398257466.
bic (or S.W.I.F.T. code) is optional if IBAN is given.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
[IBAN|Bankgiro|Plusgiro|AccountNumber]Possible values: ^[A-Z]{6}[0-9A-Z]{2}([0-9A-Z]{3})?$OK
successUnauthorized
Conflict
Unprocessable Entity
Internal Server Error
POST /partner/{partnerRegNo}/account/{accountRegNo}/bankaccount HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 221
{
"account_name": "text",
"type": "IBAN",
"account_number": "text",
"is_default": true,
"description": "text",
"bic": "text",
"bank_name": "text",
"bank_address": "text",
"bank_postal_code": "text",
"bank_city": "text",
"bank_country": "text"
}{
"status": "success",
"data": {
"success": "Bankaccount added to account SE1234567890 for partner SE9876543210"
}
}Get Bankaccounts in Account
An API to fetch (GET) a Bankaccount in an account, under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
A bank account as created, e.g. "SE4550000000058398257466" or "1234-567"
OK
successNo Content
Unauthorized
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo}/bankaccount/{bankAccount} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"accountRegNo": "SE12345567890",
"bankAccount": {
"account_name": "text",
"type": "text",
"account_number": "text",
"is_default": true,
"description": "text",
"bic": "text",
"bank_name": "text",
"bank_address": "text",
"bank_postal_code": "text",
"bank_city": "text",
"bank_country": "text"
}
}
}An API to update (PUT) a Bankaccount to a Qvalia account under your Partner account.
The bank account for the partner account is used when/if a partner account generates/creates an invoice in Qvalia Apps. If your customer don't have access to Qvalia standard App, e.g. you are using a White Label solution, the bank account marked as is_default will be used (and only one default account may exist!).
For Swedish companies (country: SE) Plusgiro and Bankgiro are allowed as type, for any other country either IBAN or AccountNumber should be used!
The type AccountNumber shall be used for any unspecified, and local, bank accounts (i.e. that's not IBAN, Bankgiro or Plusgiro)
The account_number attribute is used for all account types, and for IBAN it must start with the country code, e.g. SE4550000000058398257466.
bic (or S.W.I.F.T. code) is optional if IBAN is given.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
A bank account as created, e.g. "SE4550000000058398257466" or "1234-567"
[IBAN|Bankgiro|Plusgiro|AccountNumber]Possible values: ^[A-Z]{6}[0-9A-Z]{2}([0-9A-Z]{3})?$OK
successUnauthorized
Not Found
Unprocessable Entity
Internal Server Error
PUT /partner/{partnerRegNo}/account/{accountRegNo}/bankaccount/{bankAccount} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 197
{
"account_name": "text",
"type": "IBAN",
"is_default": true,
"description": "text",
"bic": "text",
"bank_name": "text",
"bank_address": "text",
"bank_postal_code": "text",
"bank_city": "text",
"bank_country": "text"
}{
"status": "success",
"data": {
"success": "Bank account updated for account SE1234567890 for partner SE9876543210"
}
}An API to DELETE a Bankaccount from a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
A bank account as created, e.g. "SE4550000000058398257466" or "1234-567"
OK
successUnauthorized
Not Found
Internal Server Error
DELETE /partner/{partnerRegNo}/account/{accountRegNo}/bankaccount/{bankAccount} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"success": "Bank account deleted from account SE1234567890 for partner SE9876543210"
}
}Find information about a Peppol identifier.
Partner registration number issued by Qvalia
PeppolId for the endpoint, e.g. "0007:9999999999"
Message Type, e.g. Invoice, OrderResponse, MLR
OK
successUnauthorized
Unprocessable Entity
Internal Server Error
GET /partner/{partnerRegNo}/peppol/lookup/{peppolId} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"matches": [
{
"participantID": {
"scheme": "iso6523-actorid-upis",
"value": "0007:5567321707"
},
"docTypes": [
{
"scheme": "busdox-docid-qns",
"value": "urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2::ApplicationResponse##urn:fdc:peppol.eu:poacc:trns:mlr:3::2.1"
}
]
}
],
"exists": true,
"rootDocTypeExists": false,
"source": "SML"
}
}An API to GET Peppol identifiers to a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
OK
successUnauthorized
Unprocessable Entity
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo}/peppol HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": [
{
"peppolId": "0007:5567321707",
"regNo": "SE5567321707",
"description": "Some PeppolId",
"businessCard": {
"companyName": "Qvalia AB",
"countryCode": "SE",
"geographicalInformation": "Stockholm",
"VAT": "SE556732170701",
"orgNr": "SE5567321707",
"suffix": "ABC"
},
"msgTypes": [
"invoice-creditnote-2"
]
}
]
}An API to GET a Peppol identifier to a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
PeppolId for the endpoint, e.g. "0007:9999999999"
OK
successUnauthorized
Unprocessable Entity
Internal Server Error
GET /partner/{partnerRegNo}/account/{accountRegNo}/peppol/{peppolId} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "success",
"data": {
"peppolId": "0007:5567321707",
"regNo": "SE5567321707",
"description": "Some PeppolId",
"businessCard": {
"companyName": "Qvalia AB",
"countryCode": "SE",
"geographicalInformation": "Stockholm",
"VAT": "SE556732170701",
"orgNr": "SE5567321707",
"suffix": "ABC"
},
"msgTypes": [
"invoice-creditnote-2"
]
}
}An API to add or update (PUT) a Peppol identifier to a Qvalia account under your Partner account.
If you utilize a Peppol group (receiving) for Peppol identifiers and not having separate Qvalia accounts for each of your customers then {accountRegNo} is your {partnerRegNo}
Peppol Document Types
You can find the list of allowed Peppol document types by navigating to https://docs.peppol.eu/edelivery/codelists/
They are updating the lists regularly but under that URL you'll always find the current active version. Under “Artifact” find the Document Types vX.X and click the “as HTML” to get a view of the list.
Under Associated Process/Profile Identifier(s) (on the far right in the table) you'll find the docTypes.profile value and under Peppol Document Type Identifier Value you'll get the value for docTypes.document.
If you register for Invoice, you should also register for CreditNote!
Add and update through a PUT
We've opted for a PUT operation for the creation (add) and update of Peppol identifiers as it is rather messy trying to update in a JSON structure. This means that you have to send the full object at any change (and obviously at create).
We'd recommend to write your code to first do a GET to find the current settings for the identifier, and then update the values you want to update and send the changed object in a PUT request.
The businessCard information is what is being added to the Peppol Directory and shown there, e.g.: https://directory.peppol.eu/public/locale-en US/menuitem-search?q=qvalia&action=view&participant=iso6523-actorid-upis%3A%3A0007%3A5567321707
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
PeppolId for the endpoint, e.g. "0007:9999999999"
Some PeppolIdOK
0007:9999999999Unauthorized
Unprocessable Entity
Internal Server Error
PUT /partner/{partnerRegNo}/account/{accountRegNo}/peppol/{peppolId} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 374
{
"description": "Some PeppolId",
"businessCard": {
"companyName": "Qvalia AB",
"countryCode": "SE",
"geographicalInformation": "Stockholm",
"VAT": "SE556732170701",
"orgNr": "SE5567321707",
"suffix": "ABC"
},
"docTypes": [
{
"profile": "urn:fdc:peppol.eu:poacc:bis:ordering:3",
"document": "urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1"
}
]
}{
"status": "updated",
"peppolId": "0007:9999999999"
}Delete Account Peppol Identifier
An API to DELETE a Peppol identifier to a Qvalia account under your Partner account.
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
PeppolId for the endpoint, e.g. "0007:9999999999"
OK
deletedUnauthorized
Unprocessable Entity
Internal Server Error
DELETE /partner/{partnerRegNo}/account/{accountRegNo}/peppol/{peppolId} HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
{
"status": "deleted"
}Post Partner accounts transactions
NB! This documented endpoint has a pseudo path URI! (read below)
An API to send (POST) your Partner accounts transactions.
Using the prefix of /partner/{partnerRegNo} you, as a partner, can access your accounts transactions through Qvalia Transaction API.
(message-type) and (direction) attributes in URI refers to Transaction API endpoints, e.g. invoices and incoming, which results in /partner/{partnerRegNo}/transaction/{accountRegNo}/invoices/incoming.
(message-type) and (direction) are interchangable for all Transaction API endpoints, as well as for the read endpoints, by adding the read attribute to the URI.
Refer to documentation for handling transactions at Qvalia Transaction API
Partner registration number issued by Qvalia
Account registration number issued by Qvalia
No content
POST /partner/{partnerRegNo}/transaction/{accountRegNo}/(message-type)/(direction) HTTP/1.1
Host: api-qa.qvalia.com
Authorization: YOUR_API_KEY
Accept: */*
No content
Last updated
Was this helpful?

