Konto REST API
API Versioning
Version Policy
All endpoints are under the /api/v1/ path prefix. The current version is v1 and is considered stable.
|
| Rule | Detail |
|---|---|
| Backwards compatibility | Breaking changes (removed fields, changed types, removed endpoints) will only be introduced under a new version number (e.g. /api/v2/). Additive changes (new optional fields, new endpoints) may be made to v1 without notice. |
| Deprecation notice | Deprecated endpoints will be documented here with a notice period before removal. No endpoints are currently deprecated. |
| Current stable version | v1 — actively maintained, no planned end-of-life date. |
Response Format
Response Envelope
Every endpoint returns a consistent JSON envelope with the following top-level fields. The shape of result is described in each endpoint's Response table.
| Field | Type | Description |
|---|---|---|
status |
boolean | true when the request succeeded; false when it failed. |
message |
string | When status is false, contains the error reason. When status is true, may contain a success confirmation or be empty. |
result |
mixed | The payload on success — type and shape vary by endpoint. null or absent when status is false. |
|
|
Authentication
Authenticate test
Test auth with konto api
GEThttps://konto.is/api/v1/hello
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string |
if status is TRUE then messge will "Connection succeeded"
if status is FALSE then messge will describe this error |
|
name |
string | Display name of the authenticated user or company | |
registration_no |
string | Company registration number (kennitala) of the account | |
vat_no |
string | VAT number of the company |
| curl -k -X GET "https://konto.is/api/v1/hello?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Header-based Authentication
As an alternative to passing username and api_key as form fields, you can use the standard HTTP Authorization header with Basic authentication. The username is your Konto username and the password is your api_key.
| Header | Value | Description |
|---|---|---|
Authorization |
Basic <base64(username:api_key)> |
Standard HTTP Basic auth. Encode username:api_key in Base64 and prefix with Basic . |
|
Both methods (form fields and Authorization header) are accepted on all endpoints. If both are present, the form field values take precedence. |
| Always use HTTPS to prevent credentials from being intercepted in transit. |
Customer
Customer detail
Customer detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this customer | |
output_select |
string | 2: Send e-invoice to a particular Trading Partner ID, 3: Do not send e-invoice(XML), 4: Print - Do not send email | |
address |
string | Street address | |
zip |
string | Postal/zip code | |
city |
string | City name | |
registration_no |
string | Company or personal registration number (kennitala) | |
email |
string | user@example.com | Email address |
term |
string | Default payment terms code for this customer | |
photo |
base64string | Profile photo encoded as a base64 string | |
due_date |
integer | Default due date offset in days from invoice date | |
settlement_date |
integer | Default settlement date offset in days from invoice date | |
trading_partner_id |
string | Trading partner ID for e-invoice routing | |
phone_number |
string | Contact phone number | |
vat |
string | VAT rate applied to this customer | |
lang |
string | is or en | |
currency |
string | ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK | |
tax_exempt |
boolean | Whether this customer is exempt from VAT | |
updated_timestamp |
string | Timestamp of the last update | |
is_claim |
boolean | Only available If user has active claim subscription | |
is_discount |
boolean | Only available If user has active discount subscription |
List Customers
Get list customers with konto api
GEThttps://konto.is/api/v1/get-customers
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
search |
string | (optional) search key with name customer | |
limit |
integer | (optional) item per page default all customer | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list customer |
| curl -k -X GET "https://konto.is/api/v1/get-customers?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Count Customers
Get count customers with konto api
GEThttps://konto.is/api/v1/get-count-customers
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
search |
string | (optional) search key with name customer |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is show count customer |
| curl -k -X GET "https://konto.is/api/v1/get-count-customers?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
List Customers By Kennitala
Get list customers with konto api
GEThttps://konto.is/api/v1/get-customers-by-kennitala
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
kennitala |
string | 4444444444 | (optional) search key with kennitala customer |
limit |
integer | (optional) item per page default all customer | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list customer |
| curl -k -X GET "https://konto.is/api/v1/get-customers-by-kennitala?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Count Customers By Kennitala
Get count customers with konto api
GEThttps://konto.is/api/v1/get-count-customers-by-kennitala
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
kennitala |
string | 4444444444 | (optional) search key with kennitala customer |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is show count customer |
| curl -k -X GET "https://konto.is/api/v1/get-count-customers-by-kennitala?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Get Customer
Get detail customer with konto api
GEThttps://konto.is/api/v1/get-customer
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
json | if status is TRUE is detail customer |
| curl -k -X GET "https://konto.is/api/v1/get-customer?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d&guid=5a140a1c-13c6-11e7-9914-408d5c6208bc" |
Create Customer
Create a customer with konto api
POSThttps://konto.is/api/v1/create-customer
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
json | |
(required) json of detail customer |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of customer |
| curl -k -X POST -F username="testuser" -F api_key="3a62cd2568635f115c975b8bd1317e3d" -F data="{\"output_select\":3,\"registration_no\":\"1111111111\",\"name\":\"Test\",\"address\":\"Abc\",\"zip\":\"104\",\"city\":\"Abc\",\"email\":\"xxxx@gmail.com\",\"lang\":\"is\",\"currency\":\"ISK\"}" https://konto.is/api/v1/create-customer |
Update Customer
Update a customer with konto api
POSThttps://konto.is/api/v1/update-customer
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
data |
json | |
(required) json of detail customer |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of customer |
| curl -k -X POST -F username="testuser" -F api_key="3a62cd2568635f115c975b8bd1317e3d" -F guid="614669f6-3560-11e7-8d19-408d5c6208bc" -F data="{\"output_select\":3,\"registration_no\":\"1111111111\",\"name\":\"Test\",\"address\":\"Abc\",\"zip\":\"104\",\"city\":\"Abc\",\"email\":\"xxxx@gmail.com\",\"lang\":\"is\",\"currency\":\"ISK\"}" https://konto.is/api/v1/update-customer |
Item
Item detail
Item detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this item | |
item_number |
string | Auto generate by konto | |
description |
string | Description or name of this product or service | |
uom |
string | C62 | Unit of measure (C62,KGS,MTR,LTR,MTK,MTQ,TNE,KWH,DAY,HUR,MIN,KTM) |
tax |
string | S | S,AA,Z |
unit_price |
float | Default selling price per unit | |
category |
string | Category or cost account code for this item | |
active |
boolean | Whether this item is active and available for use | |
updated_timestamp |
string | Timestamp of the last update |
List Items
Get list items with konto api
GEThttps://konto.is/api/v1/get-items
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
limit |
integer | (optional) item per page default all customer | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list item |
| curl -k -X GET "https://konto.is/api/v1/get-items?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Count Items
Get count items with konto api
GEThttps://konto.is/api/v1/get-count-items
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is show count item |
| curl -k -X GET "https://konto.is/api/v1/get-count-items?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Get Item
Get detail item with konto api
GEThttps://konto.is/api/v1/get-item
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
json | if status is TRUE is detail item |
| curl -k -X GET "https://konto.is/api/v1/get-item?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d&guid=f120bb56-f080-11e6-a96f-0050560102f2" |
Create Item
Create a item with konto api
POSThttps://konto.is/api/v1/create-item
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
json | |
(required) json of detail item |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of item |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"description\":\"Test\",\"uom\":\"KGS\",\"tax\":\"AA\",\"unit_price\":\"200\",\"category\":\"\",\"active\":\"1\"}" https://konto.is/api/v1/create-item |
Update Item
Update a item with konto api
POSThttps://konto.is/api/v1/update-item
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
data |
json | |
(required) json of detail item |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of item |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=053a639f-3565-11e7-8d19-408d5c6208bc -F data="{\"description\":\"Test\",\"uom\":\"KGS\",\"tax\":\"AA\",\"unit_price\":\"200\",\"category\":\"\",\"active\":\"1\"}" https://konto.is/api/v1/update-item |
Invoice
Invoice detail
Invoice detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this invoice | |
number |
string | Invoice number assigned by the system | |
amount |
float | Total amount of the invoice | |
currency |
string | ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK, | |
status |
string | Draft, Sent, Cancelled, Paid, Collection | |
created_date |
datetime | Format (Y-m-d) | |
issue_date |
datetime | Format (Y-m-d) | |
due_date |
datetime | Format (Y-m-d) | |
settlement_date |
datetime | Format (Y-m-d) | |
description |
string | Description or memo for this invoice | |
booking |
string | Booking reference or information for this invoice | |
cost_provide |
string | Cost location or cost provider reference | |
delivery_date |
datetime | Format (Y-m-d) | |
terms |
string | Payment or delivery terms text | |
type |
string | invoice,credit | |
refer_guid |
string | GUID of the original invoice this credit note refers to (credit notes only) | |
accounting_status |
string | Created,Posted,Skipped,Error | |
accounting_message |
string | Message returned from the accounting system integration | |
updated_timestamp |
string | Timestamp of the last update | |
xml_status |
string | Status update from invoice hub (IS: Skeytamiðlun) | |
claim_id |
string | External claim system identifier | |
claim_status |
string | sent,paid,cancel | |
capital_gains_tax |
float | Capital gains tax amount on this invoice | |
other_default_costs_amount |
float | Other default cost charges amount | |
default_charge_amount |
float | Default charge or fee amount | |
default_interest_amount |
float | Default interest amount | |
bank_transaction_amount |
float | Amount of the associated bank transaction | |
total_24vat |
float | Total amount of items subject to 24% VAT | |
total_11vat |
float | Total amount of items subject to 11% VAT | |
total_0vat |
float | Total amount of items subject to 0% VAT | |
exchange_rate |
float | Exchange rate used for non-ISK currency conversion | |
items |
string | list invoice item | |
customer |
string | invoice customer |
Invoice item detail
Invoice item detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this invoice line item | |
item_number |
string | Product or item number from the item list | |
description |
string | Description text for this line item | |
qty |
integer | Quantity of units | |
uom |
string | C62 | Unit of measure (C62,KGS,MTR,LTR,MTK,MTQ,TNE,KWH,DAY,HUR,MIN,KTM) |
tax |
string | S | S,AA,Z |
unit_price |
float | Price per unit | |
discount |
float | Discount amount or percentage applied to this line | |
discount_type |
boolean | 1: %, 0: price |
Invoice customer detail
Invoice customer detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this customer | |
name |
string | Display name of the customer | |
address |
string | Street address | |
zip |
string | Postal/zip code | |
city |
string | City name | |
registration_no |
string | Company or personal registration number (kennitala) | |
email |
string | user@example.com | Email address |
Invoice item detail for create
Invoice item detail for create example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | GUID of an existing item to use (alternative to item_number) | |
item_number |
string | required | |
description |
string | required | |
qty |
integer | required | |
uom |
string | C62 | required Unit of measure (C62,KGS,MTR,LTR,MTK,MTQ,TNE,KWH,DAY,HUR,MIN,KTM) |
unit_price |
float | required | |
tax |
string | S | required S(24%), AA(11%), Z(0%) |
discount |
float | Discount amount or percentage applied to this line | |
discount_type |
boolean | 1: %, 0: price |
Invoice customer detail for create
Invoice customer detail for create example json
| Parameter | Type | Example | Description |
|---|---|---|---|
output_select |
string | 2: Send e-invoice to a particular Trading Partner ID, 3: Do not send e-invoice(XML), 4: Print - Do not send email | |
guid |
string | Unique identifier (UUID) of an existing customer to link | |
name |
string | Display name of the customer | |
address |
string | Street address | |
zip |
string | Postal/zip code | |
city |
string | City name | |
registration_no |
string | Company or personal registration number (kennitala) | |
email |
string | user@example.com | Email address |
term |
string | Default payment terms code for this customer | |
photo |
base64string | Profile photo encoded as a base64 string | |
due_date |
integer | Default due date offset in days from invoice date | |
settlement_date |
integer | Default settlement date offset in days from invoice date | |
trading_partner_id |
string | Trading partner ID for e-invoice routing | |
lang |
string | is or en | |
currency |
string | ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK | |
tax_exempt |
boolean | Whether this customer is exempt from VAT | |
updated_timestamp |
string | Timestamp of the last update | |
phone_number |
string | Contact phone number | |
vat |
string | VAT rate applied to this customer | |
is_claim |
boolean | Only available If user has active claim subscription | |
is_discount |
boolean | Only available If user has active discount subscription |
Invoice detail for create
Invoice detail for create example json
| Parameter | Type | Example | Description |
|---|---|---|---|
amount |
float | required | |
currency |
string | required ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK | |
issue_date |
datetime | required Format (Y-m-d) | |
due_date |
datetime | required Format (Y-m-d) | |
settlement_date |
datetime | required Format (Y-m-d) | |
description |
string | Description or memo for this invoice | |
booking |
string | Booking reference or information for this invoice | |
cost_provide |
string | Cost location or cost provider reference | |
delivery_date |
datetime | Format (Y-m-d) | |
terms |
string | Payment or delivery terms text | |
type |
string | required invoice,credit | |
items |
string | required list invoice item | |
customer |
string | required invoice customer | |
trading_partner_id |
string | Trading partner ID for e-invoice routing | |
is_claim |
boolean | Whether to submit this invoice to the claim system | |
is_discount |
boolean | Whether a discount is applied to this invoice | |
discount_type |
boolean | 1: %, 0: price | |
discount_value |
float | Discount value (amount or percentage depending on discount_type) | |
payment_fee |
float | Additional payment fee to add to the invoice | |
mark_paid |
boolean | Whether to mark the invoice as paid immediately upon creation | |
files |
string | 1111,1222 | Id get from api upload |
save |
boolean | Use for save invoice |
List Invoices
Get list invoices with konto api
GEThttps://konto.is/api/v1/get-invoices
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
accounting_status |
string | (optional) list accounting status. Example: "Created,Error" or "Skipped" or "Created,Posted,Skipped" | |
date_filter |
string | optional (created_date, issue_date) default is issue_date | |
from_date |
string | optional Format (Y-m-d) | |
to_date |
string | optional Format (Y-m-d) | |
limit |
integer | (optional) item per page default all invoice | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list invoice |
| curl -k -X GET "https://konto.is/api/v1/get-invoices?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Count Invoices
Get count invoices with konto api
GEThttps://konto.is/api/v1/get-count-invoices
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
accounting_status |
string | (optional) list accounting status. Example: "Created,Error" or "Skipped" or "Created,Posted,Skipped" | |
date_filter |
string | optional (created_date, issue_date) default is issue_date | |
from_date |
string | optional Format (Y-m-d) | |
to_date |
string | optional Format (Y-m-d) |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is show count invoices |
| curl -k -X GET "https://konto.is/api/v1/get-count-invoices?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Get Invoice
Get detail invoice with konto api
GEThttps://konto.is/api/v1/get-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
json | if status is TRUE is detail invoice |
| curl -k -X GET "https://konto.is/api/v1/get-invoice?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d&guid=f110ef1e-f080-11e6-a96f-0050560102f2" |
Get Invoice PDF
Get invoice PDF as base64 encoded string with konto api
GEThttps://konto.is/api/v1/get-invoice-pdf
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required invoice guid |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe this error | |
result.guid |
string | invoice guid | |
result.file_name |
string | PDF file name | |
result.file |
string | base64 encoded PDF file content |
| curl -k -X GET "https://konto.is/api/v1/get-invoice-pdf?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d&guid=f110ef1e-f080-11e6-a96f-0050560102f2" |
Update Invoice
Update a invoice with konto api
POSThttps://konto.is/api/v1/update-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
data |
json | |
(required) |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 -F data="{\"accounting_status\":\"Skipped\",\"accounting_message\":\"Test\"}" https://konto.is/api/v1/update-invoice |
Create Invoice
Create invoice with konto api
POSThttps://konto.is/api/v1/create-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"amount\":2,\"currency\":\"USD\",\"customer\":{\"guid\":\"5a14796e-13c6-11e7-9914-408d5c6208bc\"},\"settlement_date\":\"2017-5-20\",\"due_date\":\"2017-5-20\",\"issue_date\":\"2017-5-20\",\"type\":\"invoice\",\"description\":\"Test\",\"booking\":\"Test\",\"cost_provide\":\"Test\",\"terms\":\"Test\",\"delivery_date\":\"\",\"is_claim\":1,\"mark_paid\":0,\"is_discount\":0,\"discount_type\":0,\"discount_value\":0,\"items\":[{\"item_number\":\"1\",\"description\":\"111\",\"qty\":1,\"uom\":\"C62\",\"tax\":\"Z\",\"unit_price\":1,\"discount\":0,\"save\":0,\"discount_type\":0,\"add_new\":1},{\"guid\":\"43521ec8-3413-11e7-b148-408d5c6208bc\",\"qty\":1,\"discount\":0,\"discount_type\":0}]}" https://konto.is/api/v1/create-invoice |
Create Recurring Invoice
Create recurring invoice with konto api
POSThttps://konto.is/api/v1/create-recurring-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"recurring_name\" : \"Recurring test\",\"recurring_max_invoice\" : 3,\"recurring_interval\" : \"quarterly\",\"recurring_start_date\" : \"2018-10-10\",\"recurring_link_national\" : 0,\"amount\" : 2,\"currency\" : \"USD\",\"customer\" : {\"guid\" : \"5a14796e-13c6-11e7-9914-408d5c6208bc\"},\"settlement_date\" : \"2018-10-10\",\"due_date\" : \"2018-10-10\",\"issue_date\" : \"2018-09-30\",\"description\" : \"Test\",\"booking\" : \"Test\",\"cost_provide\" : \"Test\",\"terms\" : \"Test\",\"delivery_date\" : \"\",\"is_claim\" : 1,\"is_discount\" : 0,\"discount_type\" : 0,\"discount_value\" : 0,\"mark_paid\" : 0,\"items\" : [{\"item_number\": \"1\",\"description\": \"111\",\"qty\": 1,\"uom\": \"C62\",\"tax\": \"Z\",\"unit_price\": 1,\"discount\": 0,\"discount_type\": 0,\"add_new\": 1},{\"guid\": \"43521ec8-3413-11e7-b148-408d5c6208bc\",\"qty\": 1,\"discount\": 0,\"discount_type\": 0}]}" https://konto.is/api/v1/create-recurring-invoice |
Attachment Invoice
add attachment to invoice with konto api
POSThttps://konto.is/api/v1/upload-file?username={username}&api_key={api_key}
| Parameter | Type | Example | Description |
|---|---|---|---|
file |
file | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is file id of attachment invoice |
| curl -X POST "https://konto.is/api/v1/create-recurring-invoice?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" -H "content-type: multipart/form-data" -F "file=@10121.pdf" |
Do Paid Invoice
Mark an invoice as paid with konto api
POSThttps://konto.is/api/v1/do-paid-invoice?username={username}&api_key={api_key}
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required — guid of the invoice to mark as paid |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe the error (invoice not found, cannot be changed, or claim cancellation failed) |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/do-paid-invoice |
Cost
Cost detail
Cost detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this cost | |
description |
string | Description or memo for this cost entry | |
supplier_id |
string | Supplier registration number (kennitala) or identifier | |
amount |
float | Total amount of the cost | |
vat_AA |
float | VAT amount at the AA rate (11%) | |
vat_S |
float | VAT amount at the S rate (24%) | |
cost_code |
string | Service |
Items: ItemsService: ServiceTravel: TravelSales: SalesFinance: FinanceRawMaterial: Raw Material CostsOther: Other3028: Product consumption / material usage2173: Purchased labor and services for resale3033: Salary3085: Pension fund contribution3090: Other salary-related expenses2093: Operating supplies and other production costs2243: Housing operating costs2193: Rent / leasing of facilities2423: Expensed small tools and equipment2443: Maintenance and repairs2353: Various purchased services2383: Miscellaneous office expenses2403: Leasing of movable assets / financing lease2263: Sales expenses, advertisements, etc.3163: Hospitality and gifts to business partners, sponsorships2333: Travel expenses3140: Vehicle expenses2283: Other vehicle expenses2533: Miscellaneous other expenses2633: Interest income and other capital income3653: Interest expenses and other capital expenses5028: Permanent (capitalized) operating assets2153: Item3080: Calc. endurgjald9535: VAT settlement invoice |
how_paid |
integer | 1 |
1: Account (charged to company account) 2: Debit card / Bank 3: Credit card 4: Owner cash (paid out of pocket) |
file |
base64string | Base64-encoded attachment file (receipt or invoice image) | |
file_name |
string | Original file name of the attachment | |
file_extension |
string | File extension of the attachment (e.g. pdf, jpg, png) | |
issue_date |
datetime | Format (Y-m-d) | |
created_date |
datetime | Format (Y-m-d) | |
xml |
base64string | Base64-encoded UBL Invoice 2.x / Peppol BIS Billing XML document generated by the accounting system. May be empty if the cost has not yet been processed. | |
accounting_status |
string | Created,Posted,Skipped,Error | |
updated_timestamp |
datetime | Format (Y-m-d) | |
project_name |
string | Name of the linked project, empty string if no project |
List Costs
Get list costs with konto api
GEThttps://konto.is/api/v1/get-costs
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
accounting_status |
string | (optional) list accounting status. Example: "Created,Error" or "Skipped" or "Created,Posted,Skipped" | |
type |
string | (optional) filter by cost type (cost_code). Allowed values: 3028, 2173, 3033, 3085, 3090, 2093, 2243, 2193, 2423, 2443, 2353, 2383, 2403, 2263, 3163, 2333, 3140, 2283, 2533, 2633, 3653, 5028, 2153, 3080, 9535 | |
supplier_id |
string | (optional) filter by supplier_id (kennitala) | |
date_filter |
string | optional (created_date, date) default is date | |
from_date |
string | optional Format (Y-m-d) | |
to_date |
string | optional Format (Y-m-d) | |
limit |
integer | (optional) Number of records per page. Defaults to 10. Note: other list endpoints (get-invoices, get-customers) return all records by default — always pass limit and page explicitly for predictable results. |
|
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list cost | |
hasMore |
boolean | if true it has more items | |
limit |
integer | item per page | |
page |
integer | page number | |
next_url |
string | url next items |
| curl -k -X GET "https://konto.is/api/v1/get-costs?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Count Costs
Get count costs with konto api
GEThttps://konto.is/api/v1/get-count-costs
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
accounting_status |
string | (optional) list accounting status. Example: "Created,Error" or "Skipped" or "Created,Posted,Skipped" | |
type |
string | (optional) filter by cost type (cost_code). Allowed values: 3028, 2173, 3033, 3085, 3090, 2093, 2243, 2193, 2423, 2443, 2353, 2383, 2403, 2263, 3163, 2333, 3140, 2283, 2533, 2633, 3653, 5028, 2153, 3080, 9535 | |
supplier_id |
string | (optional) filter by supplier_id (kennitala) | |
date_filter |
string | optional (created_date, date) default is date | |
from_date |
string | optional Format (Y-m-d) | |
to_date |
string | optional Format (Y-m-d) |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is show count costs |
| curl -k -X GET "https://konto.is/api/v1/get-count-costs?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Get Cost
Get detail cost with konto api
GEThttps://konto.is/api/v1/get-cost
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
json | if status is TRUE is detail cost |
| curl -k -X GET "https://konto.is/api/v1/get-cost?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d&guid=f110ef1e-f080-11e6-a96f-0050560102f2" |
Update Cost
Update a cost with konto api
POSThttps://konto.is/api/v1/update-cost
| Parameter | Type | Example | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
username |
string | required | ||||||||||
api_key |
string | required | ||||||||||
guid |
string | required | ||||||||||
data |
json | |
(required) JSON object with the following fields:
|
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of cost |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 -F data="{\"accounting_status\":\"Skipped\",\"accounting_message\":\"Test\"}" https://konto.is/api/v1/update-cost |
Delete Cost
Delete a cost with konto api
POSThttps://konto.is/api/v1/delete-cost
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/delete-cost |
Create Cost
Create a simple cost with konto api
POSThttps://konto.is/api/v1/create-cost
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
date |
string | 2026-01-15 | required (unless cost_ai is enabled). Format Y-m-d |
file |
file | required Allowed: jpg, jpeg, png, gif, pdf. Max 5MB. Images will be resized to max 1028x1028. | |
description |
string | (optional) Cost description |
201
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe this error | |
result |
string | if status is TRUE returns the guid of the created cost | |
queue |
boolean | TRUE when cost_ai is enabled — cost is queued for AI processing |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F date=2026-01-15 -F file=@receipt.jpg https://konto.is/api/v1/create-cost |
Create Cost Adv
Create a cost with konto api
POSThttps://konto.is/api/v1/create-cost-adv
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
date |
string | 2026-01-15 | required Format Y-m-d |
amount |
number | 5000 | required Total amount |
how_paid |
integer | 4 | required 1, 2, 3 or 4 |
supplier_name |
string | required Supplier name | |
supplier_id |
string | required Supplier VAT number (kennitala) | |
type |
string | required Cost type (cost_code). Allowed values: 3028, 2173, 3033, 3085, 3090, 2093, 2243, 2193, 2423, 2443, 2353, 2383, 2403, 2263, 3163, 2333, 3140, 2283, 2533, 2633, 3653, 5028, 2153, 3080, 9535 | |
description |
string | (optional) Cost description | |
vat_11 |
number | (optional) Thereof 11% VAT amount | |
vat_24 |
number | (optional) Thereof 24% VAT amount | |
file |
file | (optional) Attachment file. Allowed: jpg, jpeg, png, gif, pdf. Max 5MB. Images will be resized to max 1028x1028. |
201
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe this error | |
result |
string | if status is TRUE returns the guid of the created cost |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F date=2026-01-15 -F amount=5000 -F how_paid=4 -F supplier_name="Supplier AS" -F supplier_id=1234567890 -F type=Items -F file=@receipt.jpg https://konto.is/api/v1/create-cost-adv |
Bookkeeper
Bookkeeper detail
Bookkeeper detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this bookkeeper | |
name |
string | Full name of the bookkeeper | |
username |
string | Login username in the Konto system | |
registration_no |
string | Company registration number (kennitala) | |
vat_no |
string | VAT number of the bookkeeper | |
email |
string | Contact email address | |
service_provider_guid |
string | GUID of the associated service provider | |
status |
String | Registered,Active,Inactive | |
count_of_bookkeepers |
integer | Total number of bookkeepers managed by this account | |
instance_config |
json | JSON configuration settings for this bookkeeper instance |
Tenant detail
Tenant detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this tenant | |
name |
string | Full name of the tenant company | |
username |
string | Login username in the Konto system | |
api_key |
string | API authentication key for this tenant | |
registration_no |
string | Company registration number (kennitala) | |
vat_no |
string | VAT number of the tenant | |
email |
string | Contact email address | |
address |
string | Street address | |
zip |
string | Postal/zip code | |
city |
string | City name | |
phone_number |
string | Contact phone number | |
bank_account |
string | Bank account number | |
bank_provider |
string | Name of the bank provider | |
claim_identifier |
string | Identifier used for claim processing | |
bank_username |
string | Username for bank integration | |
bank_password |
string | Password for bank integration (stored encrypted) | |
claim_branch |
string | Branch code used for claim submissions | |
bookkeeper_guid |
string | GUID of the assigned bookkeeper | |
active_plan |
string | Currently active subscription plan name | |
count_of_payusers |
integer | Number of paying users under this tenant | |
active_item |
string | GUID or name of the currently active product/service item |
Get Bookkeeper
Get detail bookkeeper with konto api
GEThttps://konto.is/api/v1/get-bookkeeper
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
json | if status is TRUE is detail bookkeeper |
| curl -k -X GET -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/get-bookkeeper |
Get Tenant
Get detail tenant with konto api
GEThttps://konto.is/api/v1/get-tenant
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
json | if status is TRUE is detail tenant |
| curl -k -X GET -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/get-tenant |
Bookkeeper
Update a bookkeeper with konto api
POSThttps://konto.is/api/v1/update-bookkeeper
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
status |
string | Registered,Active,Inactive | |
count_of_bookkeepers |
integer | ||
instance_config |
json |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of bookkeeper |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 -F status=Active https://konto.is/api/v1/update-bookkeeper |
Bill-to-Invoices
Invoice detail for create save
Invoice detail for create save example json
| Parameter | Type | Example | Description |
|---|---|---|---|
amount |
float | required | |
currency |
string | required ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK | |
issue_date |
datetime | required Format (Y-m-d) | |
due_date |
datetime | required Format (Y-m-d) | |
settlement_date |
datetime | required Format (Y-m-d) | |
description |
string | ||
booking |
string | ||
cost_provide |
string | ||
delivery_date |
datetime | Format (Y-m-d) | |
terms |
string | ||
type |
string | required invoice,credit | |
items |
string | required list invoice item | |
trading_partner_id |
string | ||
is_claim |
boolean | ||
is_discount |
boolean | ||
discount_type |
boolean | 1: %, 0: price | |
discount_value |
float | ||
mark_paid |
boolean | ||
create_type |
string | required user,email | |
kennitala |
string | 4444444444 | required if create_type is user. 10-digit Icelandic national ID. |
email |
string | user@example.com | required if create_type is email |
Create Save Invoice
Create save invoice with konto api
POSThttps://konto.is/api/v1/create-save-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | This is GUID of invoice if create_type is "user" and status is "TRUE" |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"amount\":\"2095.6\",\"currency\":\"ISK\",\"create_type\":\"user\",\"kennitala\":\"4444444444\",\"settlement_date\":\"2021-06-09\",\"due_date\":\"2021-06-09\",\"issue_date\":\"2021-06-07\",\"type\":\"invoice\",\"items\":[{\"guid\":\"6be71e6c-d7dd-11e7-b836-005056c00001\",\"qty\":1}]}" https://konto.is/api/v1/create-save-invoice |
Order Invoices
Order invoice detail
Order invoice example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this invoice | |
number |
string | Invoice number assigned by the system | |
amount |
float | Total invoice amount | |
issue_date |
datetime | Format (Y-m-d) |
Invoice detail for create save
Invoice detail for create save example json
| Parameter | Type | Example | Description |
|---|---|---|---|
amount |
float | required | |
currency |
string | required ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK | |
settlement_date |
number | required | |
description |
string | Description or memo for this invoice | |
booking |
string | required | |
cost_provide |
string | Cost location or cost provider reference | |
delivery_date |
datetime | Format (Y-m-d) | |
terms |
string | Payment or delivery terms text | |
items |
string | required list invoice item | |
trading_partner_id |
string | Trading partner identifier for e-invoice routing | |
is_claim |
boolean | Whether this invoice is submitted to the claim system | |
is_discount |
boolean | Whether a discount is applied to this invoice | |
discount_type |
boolean | 1: %, 0: price | |
discount_value |
float | The discount amount or percentage value | |
mark_paid |
boolean | Whether to mark the invoice as paid immediately upon creation | |
kennitala |
string | 4444444444 | required 10-digit Icelandic national ID (kennitala). |
Invoice detail for update order
Invoice detail for update order example json
| Parameter | Type | Example | Description |
|---|---|---|---|
amount |
float | Total invoice amount | |
currency |
string | ISK,EUR,USD,DKK,NOK,SEK,JPY,GBP,AUD,PLN,CAD,CHF,CNY,NZD,MXN,SGD,HKD,KRW,TRY,RUB,INR,VND,BRL,ZAR,UAH,CZK | |
settlement_date |
number | Number of days until settlement (payment due offset) | |
description |
string | Description or memo for this invoice | |
booking |
string | Booking reference or information for this invoice | |
cost_provide |
string | Cost location or cost provider reference | |
delivery_date |
datetime | Format (Y-m-d) | |
terms |
string | Payment or delivery terms text | |
items |
string | list invoice item | |
trading_partner_id |
string | Trading partner identifier for e-invoice routing | |
is_claim |
boolean | Whether this invoice is submitted to the claim system | |
is_discount |
boolean | Whether a discount is applied to this invoice | |
discount_type |
boolean | 1: %, 0: price | |
discount_value |
float | The discount amount or percentage value | |
mark_paid |
boolean | Whether to mark the invoice as paid immediately | |
kennitala |
string | 4444444444 | 10-digit Icelandic national ID (kennitala) |
Create Order Invoice
Create order invoice with konto api
POSThttps://konto.is/api/v1/create-order-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"amount\":\"2095.6\",\"currency\":\"ISK\",\"kennitala\":\"4444444444\",\"booking\":\"test\",\"settlement_date\":\"10\",\"items\":[{\"guid\":\"6be71e6c-d7dd-11e7-b836-005056c00001\",\"qty\":1}]}" https://konto.is/api/v1/create-order-invoice |
Update Order Invoice
Update order invoice with konto api
POSThttps://konto.is/api/v1/update-order-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 -F data="{\"amount\":\"2095.6\",\"currency\":\"ISK\",\"kennitala\":\"4444444444\",\"settlement_date\":\"10\",\"items\":[{\"guid\":\"6be71e6c-d7dd-11e7-b836-005056c00001\",\"qty\":1}]}" https://konto.is/api/v1/update-order-invoice |
Delete Order Invoice
Delete order invoice with konto api
POSThttps://konto.is/api/v1/delete-order-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/delete-order-invoice |
Get Invoice From Order
Get list invoice from order with konto api
POSThttps://konto.is/api/v1/get-invoices-from-order
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
limit |
integer | (optional) item per page default all invoice | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/get-invoices-from-order |
Draft Invoices
Create Draft Invoice
Create draft invoice with konto api
POSThttps://konto.is/api/v1/create-draft-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"amount\":\"2095.6\",\"currency\":\"ISK\",\"kennitala\":\"4444444444\",\"booking\":\"test\",\"settlement_date\":\"10\",\"items\":[{\"guid\":\"6be71e6c-d7dd-11e7-b836-005056c00001\",\"qty\":1}]}" https://konto.is/api/v1/create-order-invoice |
Update Draft Invoice
Update draft invoice with konto api
POSThttps://konto.is/api/v1/update-draft-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 -F data="{\"amount\":\"2095.6\",\"currency\":\"ISK\",\"kennitala\":\"4444444444\",\"settlement_date\":\"10\",\"items\":[{\"guid\":\"6be71e6c-d7dd-11e7-b836-005056c00001\",\"qty\":1}]}" https://konto.is/api/v1/update-order-invoice |
Delete Draft Invoice
Delete draft invoice with konto api
POSThttps://konto.is/api/v1/delete-draft-invoice
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/delete-order-invoice |
Get Invoice From Draft
Get list invoice from draft with konto api
POSThttps://konto.is/api/v1/get-invoices-from-draft
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
limit |
integer | (optional) item per page default all invoice | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list invoice |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/get-invoices-from-order |
Dashboard Data
Invoice detail
Invoice detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
invoice_creator_username |
string | The unique username from Konto system | |
invoice_issue_date |
date | Format (Y-m-d) | |
invoice_number |
string | The unique invoice number | |
invoice_status |
string | Invoice can be either Paid or Not Paid | |
customer_number |
string | Value from the customer profile (other information) - does not have to be unique - used to group users | |
customer_name |
string | Customer name - from customer profile | |
customer_guid |
string | Unique ID for this customer profile | |
invoice_description |
string | The description value from this invoice | |
document_type |
string | "Invoice" or "Credit Note" | |
invoice_booking_information |
string | The booking information value from this invoice | |
invoice_order_reference |
string | The order reference value from this invoice | |
invoice_cost_location |
string | The Cost location value selected for this invoice | |
invoice_total_excluding_vat |
string | Invoice total amount, excluding VAT | |
invoice_vat_total |
string | Total amount of VAT for this invoice | |
invoice_total_discount |
string | Total amount discounted from this invoice | |
invoice_total_including_vat |
string | Invoice total amount, including VAT | |
items |
string | list invoice item |
Invoice item detail
Invoice item detail example json
| Parameter | Type | Example | Description |
|---|---|---|---|
number |
string | The given Product number | |
name |
string | The given Product Name | |
description |
string | Product Description | |
qty |
integer | Quantity | |
uom |
string | Unit of measure (C62,KGS,MTR,LTR,MTK,MTQ,TNE,KWH,DAY,HUR,MIN,KTM) | |
vat_code |
string | S,AA,Z | |
category_code |
string | Registered value on Product in item-list | |
guid |
string | Unique ID for this product | |
product_cost |
string | Product cost value used to calculate the margin and profit | |
total_excluding_vat |
float | Item line total, excluding the VAT | |
total_vat |
float | Total VAT on the item-line | |
total_including_vat |
float | Item line total, including VAT | |
total_discount |
float | Total amount discounted for this item line (including VAT) | |
profit |
number | Total amount (excluding VAT) minus the Product cost | |
margin |
number | Ratio of Product cost and Sales amount |
Get data
Get list invoice for dashboard data konto api
POSThttps://konto.is/api/v1/get-dashboard-data
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
start_date |
date | (optional) Format (Y-m-d) | |
end_date |
date | (optional) Format (Y-m-d) | |
limit |
integer | (optional) item per page default all invoice | |
page |
integer | (optional) page number |
200
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F guid=f110ef1e-f080-11e6-a96f-0050560102f2 https://konto.is/api/v1/get-dashboard-data |
Task
Task detail
Task example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this task | |
number |
string | Task number assigned by the system | |
name |
string | Name or title of the task | |
status |
string | Current status of the task (e.g. open, closed, invoiced) | |
item |
object | item | |
customer |
object | customer | |
start_time |
datetime | Format (d.m.Y H:i) | |
total_time |
float | Total time logged for this task in hours | |
invoices |
array | list invoice | |
logs |
array | list log | canStart |
boolean | Whether the current user can start this task |
canStop |
boolean | Whether the current user can stop this task | |
canDeactive |
boolean | Whether the current user can deactivate this task | |
project_name |
string | Name of the linked project, empty string if no project |
Task log detail
Task log example json
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | Unique identifier (UUID) for this log entry | |
manual |
boolean | Whether this log entry was entered manually (true) or auto-timed (false) | |
creation_date |
datetime | Date and time this log entry was created (Format Y-m-d H:i:s) | |
quantity |
float | Amount of time logged in hours | |
description |
string | Notes or description for this log entry | |
advanced |
boolean | Whether this is an advanced log entry (uses from/to date range) | |
count_of_workers |
integer | Number of workers involved in this log entry | |
hours_worked_per_day |
integer | Hours worked per day used in advanced mode calculations | |
from_date |
datetime | Start date of this log period (Format Y-m-d) | |
to_date |
datetime | End date of this log period (Format Y-m-d) | |
image |
string | URL or path to an attached image or receipt |
Create task
Create task with konto api
POSThttps://konto.is/api/v1/create-task
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
data |
string |
|
(required) json of detail invoice |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
integer | if status is TRUE is GUID of task |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d -F data="{\"customer_guid\": \"bc2917d7-2dba-11f0-8f4b-d85ed38291f0\",\"name\":\"test\", \"item\": {\"guid\":\"\",\"description\" : \"Test\",\"uom\" : \"KGS\",\"tax\" : \"AA\",\"unit_price\" : \"200\",\"category\" : \"\"}}" https://konto.is/api/v1/create-task |
Get Task
Get task with konto api
POSThttps://konto.is/api/v1/get-task
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is get detail task |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d https://konto.is/api/v1/get-task |
Get Task
Get list task with konto api
POSThttps://konto.is/api/v1/get-tasks
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
type |
string | optional ('open', 'invoice', 'older') default is open | |
limit |
integer | (optional) item per page default all task | |
page |
integer | (optional) page number |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show list task |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d https://konto.is/api/v1/get-tasks |
Get Count Task
Get count task with konto api
POSThttps://konto.is/api/v1/get-count-tasks
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
type |
string | optional ('open', 'invoice', 'older') default is open |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error | |
result |
object | if status is TRUE is show count tasks |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d https://konto.is/api/v1/get-cout-tasks |
Start Task
Start task with konto api
POSThttps://konto.is/api/v1/start-task
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d https://konto.is/api/v1/start-task |
End Task
End task with konto api
POSThttps://konto.is/api/v1/end-task
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
description |
string | Optional notes or description for the completed work | |
file |
file | Optional file attachment (image or document) |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d description="test" https://konto.is/api/v1/end-task |
Log Task
Log task with konto api
POSThttps://konto.is/api/v1/log-task
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
description |
string | Notes or description for this log entry | |
file |
file | Optional file attachment (image or document) | |
adv |
boolean | Whether to use advanced logging mode (from/to date range) | |
date |
date | required Format (Y-m-d) | |
end_date |
date | required Format (Y-m-d) | |
h |
integer | Start hour in HH:MM format (used in advanced mode) | |
p |
integer | End hour in HH:MM format (used in advanced mode) |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d date="2025-10-01" end_date="2025-10-10" description="test" https://konto.is/api/v1/log-task |
Delete Log Task
delete log task with konto api
POSThttps://konto.is/api/v1/task-log-delete
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d https://konto.is/api/v1/task-log-delete |
Edit Log Task
Edit log task with konto api
POSThttps://konto.is/api/v1/edit-log-task
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required | |
description |
string | Notes or description for this log entry | |
file |
file | Optional file attachment (image or document) | |
adv |
boolean | Whether to use advanced logging mode (from/to date range) | |
date |
date | required Format (Y-m-d) | |
end_date |
date | required Format (Y-m-d) | |
h |
integer | Start hour in HH:MM format (used in advanced mode) | |
p |
integer | End hour in HH:MM format (used in advanced mode) |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then messge will describe this error |
| curl -k -X POST -F username=testuser -F api_key=3a62cd2568635f115c975b8bd1317e3d date="2025-10-01" end_date="2025-10-10" description="test" https://konto.is/api/v1/edit-log-task |
Sell Product
Product Sale detail
Product Sale example object
| Parameter | Type | Example | Description |
|---|---|---|---|
guid |
string | ||
status |
integer | 1 = open, 0 = closed | |
is_open |
boolean | ||
type |
integer | KONTO_SELL_PRODUCT_STAND, KONTO_SELL_PRODUCT_SUB, KONTO_SELL_PRODUCT_DONA, KONTO_SELL_PRODUCT_EVENT | |
url |
string | Public URL of the selling page | |
terms |
string | ||
name |
string | Item description | |
description |
string | Selling notes | |
amount |
float | Price including tax | |
inventory_control |
boolean | ||
inventory_count |
integer | Remaining stock |
Attend detail
Attend row example object (event type only)
| Parameter | Type | Example | Description |
|---|---|---|---|
attendee |
string | Name and email of the attendee e.g. "John Doe (john@example.com)" | |
phone_number |
string | ||
qty |
integer | Number of tickets | |
invoice_number |
string | ||
kennitala |
string | 4444444444 | National ID of the buyer (10-digit Icelandic kennitala) |
invoice_status |
string | e.g. "Paid", "Not paid on time" | |
name |
string | Buyer name | |
zip |
string | Buyer zip/postal code | |
city |
string | Buyer city | |
address |
string | Buyer address | |
message |
string | Message left by buyer | |
attended |
string | "true" or "false" | |
fields |
array | [{"label":"Field Name","value":"Field Value"}] |
Custom fields submitted by the buyer. Each entry has label (field key) and value (field value) |
List Product Sales
Get list of product sales with konto api
GEThttps://konto.is/api/v1/get-product-sales
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
search_text |
string | (optional) filter by description | |
limit |
integer | (optional) items per page, default uses system setting | |
page |
integer | (optional) page number, default 1 |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe the error | |
result |
array | if status is TRUE shows list of product sale | |
total |
integer | total number of items | |
page |
integer | current page number |
| curl -k -X GET "https://konto.is/api/v1/get-product-sales?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
Count Product Sales
Get count of product sales with konto api
GEThttps://konto.is/api/v1/get-count-product-sales
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
search_text |
string | (optional) filter by description |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe the error | |
result |
integer | if status is TRUE shows count of product sales |
| curl -k -X GET "https://konto.is/api/v1/get-count-product-sales?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d" |
List Product Sale Attendees
Get list of attendees for an event-type product sale with konto api
GEThttps://konto.is/api/v1/get-product-sale-attends
| Parameter | Type | Example | Description |
|---|---|---|---|
username |
string | required | |
api_key |
string | required | |
guid |
string | required guid of the selling (must be type event) | |
limit |
integer | (optional) items per page, default uses system setting | |
page |
integer | (optional) page number, default 1 |
200
| Parameter | Type | Example | Description |
|---|---|---|---|
status |
boolean | Return TRUE when success | |
message |
string | if status is FALSE then message will describe the error | |
result |
array | if status is TRUE shows list of attend | |
total |
integer | total number of attendee rows | |
page |
integer | current page number |
| curl -k -X GET "https://konto.is/api/v1/get-product-sale-attends?username=testuser&api_key=3a62cd2568635f115c975b8bd1317e3d&guid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" |
Agent API (OAuth2)
The Agent API lets trusted automation clients (MCP servers, AI assistants) perform actions on Konto on behalf of a user using OAuth2 Bearer tokens and scope-based permissions.
Overview & Flow
|
Available Scopes
| Scope | Permits |
|---|---|
create_invoice | POST /api/v1/agent/invoices, POST /api/v1/agent/quotes |
cost | POST /api/v1/agent/costs |
dashboard_data | GET /api/v1/agent/status |
task | POST /api/v1/agent/tasks, POST /api/v1/agent/tasks/log |
bookkeeper | Bookkeeper actions |
recurring | Recurring invoice actions |
nav | NAV / government reporting actions |
Authentication Methods
|
|
Register Agent Client
Register a new agent application. Returns client_id and client_secret. Store the secret securely — it is shown only once.
/agent/register
| Parameter | Type | Required | Description |
|---|---|---|---|
username | string | Yes | Konto username (owner) |
api_key | string | Yes | Konto API key |
name | string | Yes | Human-readable agent name |
description | string | No | Short description |
redirect_uri | string | Yes | OAuth2 callback URL |
|
|
Exchange Code for Bearer Token
Exchange the auth_code for a Bearer token (valid 1 day) and a refresh token (valid 30 days). Use the access token in the Authorization header for all subsequent API calls. When it expires, use the refresh token to get a new pair without user re-consent.
/agent/token
| Parameter | Type | Required | Description |
|---|---|---|---|
grant_type | string | Yes | Must be authorization_code |
client_id | string | Yes | Your agent's client_id |
client_secret | string | Yes | Your agent's client_secret |
code | string | Yes | auth_code from the consent redirect |
|
|
Refresh Access Token
When the access token expires, use the refresh_token to get a new access token + refresh token pair. No user re-consent required. The old refresh token is immediately invalidated.
/agent/token
| Parameter | Type | Required | Description |
|---|---|---|---|
grant_type | string | Yes | Must be refresh_token |
client_id | string | Yes | Your agent's client_id |
client_secret | string | Yes | Your agent's client_secret |
refresh_token | string | Yes | refresh_token from previous token response |
|
POST /api/v1/agent/invoices — Create Invoice
Requires scope create_invoice. Accepts the same body parameters as createInvoice.
https://konto.is/api/v1/agent/invoices
|
POST /api/v1/agent/quotes — Create Quote
Requires scope create_invoice. Same body as createInvoice; automatically sets system_type=quote.
https://konto.is/api/v1/agent/quotes
|
POST /api/v1/agent/costs — Register Cost
Requires scope cost. Accepts the same body parameters as createCost.
https://konto.is/api/v1/agent/costs
|
POST /api/v1/agent/tasks — Create Task
Requires scope task. Creates a new task. The data field is a JSON-encoded task object.
https://konto.is/api/v1/agent/tasks
| Parameter | Type | Required | Description |
|---|---|---|---|
data | string (JSON) | Yes | JSON-encoded task object (see Task detail) |
|
POST /api/v1/agent/tasks/log — Log Work on Task
Requires scope task. Logs hours/work against an existing task identified by guid.
https://konto.is/api/v1/agent/tasks/log
| Parameter | Type | Required | Description |
|---|---|---|---|
guid | string | Yes | Task GUID (returned from createTask) |
qty | float | Yes | Hours worked (e.g. 1.5) |
date | string | No | Work date (d.m.Y format, defaults to today) |
adv | bool | No | Advanced log mode |
h | string | No | Start hour (HH:MM) |
p | string | No | End hour (HH:MM) |
|
GET /api/v1/agent/status — Account Status
Requires scope dashboard_data. Returns a summary of the user's account.
https://konto.is/api/v1/agent/status
|
GET /api/v1/agents — List Authorized Agents
Returns all agents the authenticated user has granted access to.
https://konto.is/api/v1/agents
|
POST /api/v1/agents — Grant Scopes to Agent
Programmatically grant scopes to an agent (alternative to the consent page flow).
https://konto.is/api/v1/agents
| Parameter | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | Agent's client_id to authorize |
scopes | array/string | Yes | Array or comma-separated scope list |
|
DELETE /api/v1/agents/{agent_id} — Revoke Agent
Revokes an agent's delegation and all its Bearer tokens.
https://konto.is/api/v1/agents/{agent_id}
|
GET /api/v1/agent/audit — Agent Audit Log
Returns a paginated log of all agent API calls made on behalf of the authenticated user.
https://konto.is/api/v1/agent/audit
| Parameter | Type | Default | Description |
|---|---|---|---|
agent_id | string | — | Filter by specific agent (optional) |
limit | int | 50 | Max records (1–200) |
page | int | 1 | Page number |
|
action_id — Async Action Tracking
Every agent API call returns an action_id. Use it to confirm the operation status.
|