Likvido API Documentation

Welcome to our API documentation.
If you have any questions feel free to contact our CTO Lars
Holdgaard on [email protected] 

Welcome to the LikvidoAPI documentation!

We have two different "types" of API's:

  • API to interact with your own account. This is used when you have an account on Likvidoand want to access your own data, add new invoices and generally work with your own data.
  • API for partners. This is used for white-label partners where you actuallymanage a list of companies. The logic for partners is the same as companies with their own API key - the only difference is that a partner can make calls on behalf of the companies they manage

API URL

You can access the API at:

https://core.likvido.dk/api (core API path)

You can find our current Swagger UI:

https://core.likvido.dk (Swagger UI)

Understanding our domain

Invoices

Everything we do revolves around Invoices. An invoice is a claim from a creditor to a debtor.

A creditor is a person or company that has a claim. A creditor can be anyone: companies & consumers.
If you access "your own data", you will be the creditor. Partners will have control over a list of creditors.

A debtor is a person or company that owes money to a creditor. A debtor can be anyone - companies & consumers. Debtorsbelong to a creditor, meaning we don't "merge" debtors between creditors and see them as unique individuals.

When an invoice is created at Likvido, it will go through a couple of stages. The goal is to assign a campaign to the invoice.

The steps the invoice goes through are:

  1. Data validation to make sure the provided data is correct (typically ~24 hours)
  2. Create the first demand (typically instant)
  3. Assign the correct campaign (typically instant)
  4. Send out communication (typically instant, but up to ~24 hours depending on weekend/weekday and time of day)

Campaigns

All invoices are assigned to a campaign.

A campaign is a collection of actions and communication that Likvido will send to a debtor. A campaign can be anything from sending out a friendly "New invoice" e-mail to a campaign which has the purpose of actually suing the debtor.

Our campaigns have a CampaignType. CampaignTypes are:

  • Invoicing - purpose is to just send our an invoice to the debtor
  • Reminders - purpose is to start a reminder flow starting from friendly reminders (without fees) to sending two actual reminders with fees
  • Debt collection - purpose is to start with a debt collection warning (inkassovarsel in Danish) and then starting an actual debt collection process

When you POST new invoices you can set the initialCampaignTypeRequest,meaning you can decide which flow you want us to start.

Models

We've described our models in Swagger. That means you can simply click "Model" in the responses to see what you're expected to POST or GET in return:

Required vs optional parameters

We've made sure that the required attributes on objects are marked with a [Required] field which results on the stars you can find on Swagger:

Getting your API key

If you want to interact with your own data, it's really easy. When logged in, in the top right, you can click "API nøgler". Here you can generate as many API keys you want. You can also access it on this link.

If you're a partnerthen we need to create an API key for you manually. Please create an account and request us to give you a partner API key.

After this step, you should have a nice API key.

Check authentication & authorization

Whenever using our API, you need to use your API key. Simply add an HTTP header with "ApiKey" and your key.

To test if you're doing it right, you can use the Authentication endpoint. Here is an example with the ApiKey test, which will result in a 401 response.

curl -X GET "https://core.likvido.dk/api/Authentication" -H "accept: application/json" -H "ApiKey: test"

If you're doing it right, you will get a status code 200 response back, and if not, a 401 unauthorized response.

Test vs. production

We currently don't offer a test environment for those who want to access their own data. If you need special access, please contact us and we can help you out.

For partners, we will always create two accounts: one for production and one for thetest environment. That means you have two URL's as a partner:

https://testcore.likvido.dk (test)

and

https://core.likvido.dk (production)

Pagination

Currently we donot limit the pagesize on requests. That is in our near-term road map so we suggest you build in pagination from the start.

We always offer a Take and Skip parameter you can use. As an example could be here where we get 20 invoices, skipping the first 20:

curl -X GET "https://core.likvido.dk/api/Invoices?Take=20&Skip=20" -H "accept: application/json"

Enums

Our enums are represented as strings in Swagger, however, some of them need further explanation.

Invoices

InvoiceState: This is the current state of the Invoice. We have the following states:

  • 0: New: Everything is ready and we're about to send communication
  • 15: Invoice: Invoice is in the invoicing process
  • 1: Dunning Invoice is in the reminders process
  • 2: DebtCollection: Invoice is in the debt collection process
  • 3: Legal: We're now taking legal action
  • 4: Objection: Debtor had an objection - pending we reply
  • 5: Surveillance: In surveillance
  • 6: Installment: Installmentplan is made
  • 7: Done: Case is done and finished
  • 8: PendingCreditor: Pending the creditor
  • 9: PendingCreation: We're pending creating the demand
  • 16: PendingAcceptance: The creditor needs to accept the campaign we're starting
  • 10: Paused: The case is paused
  • 11: SmallCourt: The case is taken to the courts
  • 12: PendingData: We're validating the data
  • 13: PendingCampaign: We're picking the relevant campaign for the invoice
  • 14: DataInvalid: Data is invalid and we need new data to continue the case

InitialCampaignTypeRequest: This is the request for the type of campaign we should run first:

  • 1: DebtCollection: Starts a debt collection campaign
  • 3: Surveillance: Starts a surveillance campain
  • 5: Reminders: Starts a reminder campaign
  • 6: Invoice: Starts an invoicing campaign

Creditors

CreditorType: This is the overall type of a creditor:

  • 0: Private: Consumer
  • 1: Company: Corporation / company which has a valid VAT-number

Example requests & responses

Get a list of invoices

Example request:

curl -X GET "https://core.likvido.dk/api/Invoices" -H "accept: application/json" -H "ApiKey: myuniquekey"

Example return from our test environment (3 invoices):

[  {    "id": "cf1e4c9c-6dd2-4995-abcd-404d7feb6812",    "dateCreated": "2018-08-30T15:45:41.387",    "dateUpdated": "2018-09-02T13:19:43.41",    "referenceId": "354-102",    "creditorReference": "102",    "invoiceExpirationDate": "2021-03-12T00:00:00",    "invoiceFoundation": false,    "currency": "DKK",    "netAmount": 26838,    "grossAmount": 33547.5,    "remainder": 33047.5,    "vatAmount": 6709.5,    "dueDate": "2018-03-22T00:00:00",    "date": "2018-03-12T00:00:00",    "invoiceState": 12,    "invoiceSource": 0,    "initialCampaignTypeRequest": 1,    "debtorId": 259,    "creditorId": 354  },  {    "id": "b35522a1-e54a-462c-9aad-9dee0332c8c7",    "dateCreated": "2018-08-30T15:33:01.72",    "referenceId": "354-101",    "creditorReference": "101",    "invoiceExpirationDate": "2021-05-21T00:00:00",    "invoiceFoundation": false,    "currency": "DKK",    "netAmount": 123700,    "grossAmount": 154625,    "remainder": 154125,    "vatAmount": 30925,    "dueDate": "2018-05-29T00:00:00",    "date": "2018-05-21T00:00:00",    "invoiceState": 12,    "invoiceSource": 0,    "initialCampaignTypeRequest": 1,    "debtorId": 258,    "creditorId": 354,    "invoiceComments": "Jeg er en mega lang faktura."  },  {    "id": "0bb3cb52-622c-45c5-bc97-94a5f3cce9c7",    "dateCreated": "2018-08-28T11:30:09.57",    "dateUpdated": "2018-08-29T11:18:46.847",    "referenceId": "354-100",    "creditorReference": "100",    "invoiceExpirationDate": "2021-05-14T00:00:00",    "invoiceFoundation": false,    "currency": "DKK",    "netAmount": 1600,    "grossAmount": 2000,    "remainder": 2000,    "vatAmount": 400,    "dueDate": "2018-05-22T00:00:00",    "date": "2018-05-14T00:00:00",    "invoiceStateOnClose": 0,    "invoiceState": 14,    "invoiceSource": 0,    "initialCampaignTypeRequest": 1,    "debtorId": 255,    "creditorId": 354  }]

Any questions?

If you have any questions to our tech-stack or API please dont
hesitate to contact me on [email protected]
Also feel free to connect if you have any feedback.
You can see our full roadmap online. 

See roadmap Book demo

“Feel free to send me an e-mail if you have any (technical) questions or want to join our tech-slack channel”

Lars Holdgaard   
Co-founder & partner