Release Notes

Information about future and past API releases

Version releases

We are constantly adding new features to Procountor API. This page has the planned changes in future releases as well as release notes for the current ones. For anyone interested, we recommend subscribing to our mailing list to get notifications about API changes as soon as they become available.

Subscribe to our mailing list

Currently available API versions

Procountor API version diagram

API Path Version Release Date Support Ends
/latest Monthly release with no extended support. However, if new API version isn't released, it will continue to have the previous release
/supported 24.02 Updated to the latest numbered version every three months
/v2402 24.02 2024-02-17 mid-Nov 2024
/v2311 23.11 2023-11-18 mid-Aug 2024
/v2308 23.08 2023-08-19 mid-May 2024

You can find the version update schedule from Procountor news and announcements site.

Release notes

Planned for future

Upcoming API breaking changes

  • In Procountor release version 88.0 (May 2024), base_url and documentation fields from GET /status will be removed
  • GET /users/rights will be updated to align it with Procountor UI (Management > Users and user rights)

Changes in version 24.04

Endpoints

  • We have added a new endpoint GET /invoices/personalverifications to fetch invoice ids waiting for verification from the currently logged in user, including those invoices where the user has been assigned as a substitute. Details of the returned invoice can be fetched from GET /invoices/{invoiceId}. This endpoint returns empty list
    • If the user doesn’t have any invoice to verify
    • Invoice circulation is disabled for all the supported invoice types (useForPurchaseInvoices and useForTravelAndExpenseInvoices are false in GET /company/invoicecirculation/settings)
    • If the user doesn't have "All rights" to verify (verification in PurchasesRights in GET users/rights)

This endpoint supports required query parameter types, which accepts more than one type, separated by comma. Available values are PURCHASE_INVOICE,TRAVEL_INVOICE, BILL_OF_CHARGES. If the user doesn’t have required permission to the given invoice types, 403 error is returned.

  • We have also added a new endpoint GET /invoices/personalapprovals to fetch invoice ids waiting for approval from the currently logged in user, including those invoices where the user has been assigned as a substitute. Details of the returned invoice can be fetched from GET /invoices/{invoiceId}. This endpoint returns empty list
    • If the user doesn’t have any invoice to approve
    • Invoice circulation is disabled for all the supported invoice types (useForPurchaseInvoices and useForTravelAndExpenseInvoices are false in GET /company/invoicecirculation/settings)
    • If the user doesn't have "All rights" to approve (approval in PaymentTransactionsRights in GET users/rights)

This endpoint supports required query parameter types, which accepts more than one type, separated by comma. Available values are PURCHASE_INVOICE,TRAVEL_INVOICE, BILL_OF_CHARGES. If the user doesn’t have required permission to the given invoice types, 403 error is returned.

Others

  • API reference documentation has been updated
    • Endpoints that support batch requests, their ID parameter is now of type string and format multi
    • Endpoints that accept integer parameters, format of those parameters have been changed from int64 to int32

This has been fixed for all API versions.

Changes in version 24.03

Endpoints

  • From now onwards following endpoints check whether usage settings (in Procountor UI: Management > Company info > Usage settings) to use cash discount is in use or not. If cash discount is not in use, API returns 400 error code when request is sent with cashDiscount. This affects all API versions.

    • POST /businesspartners
    • PUT /businesspartners/{id}
    • PATCH /businesspartners/{id}
  • GET/businesspartners/{id} and GET/invoices/{id} endpoints from now onwards do not return cashDiscount in BusinessPartnerPaymentInfo and PaymentInfo object respectively, when there is no cash discount or cash discount is not in use (in Usage settings). This affects all API versions

  • In Swedish and Danish environments, GET /ledgerreceipts and GET /ledgerreceipts/{receiptId} endpoints now return optional serialNumber, if it exists. SerialNumber object consists of series and number.

Others

API Developers portal has been updated with own links for Sweden (e.g. Swedish Procountor API Terms of Use, General use and customer agreement terms, Partner program for Swedish software companies, Support and consultancy, Procountor customer service).

Changes in version 24.02

Endpoints

  • To ensure that only the latest invoice is updated and there are no multiple accounting pages for the same invoice, it is now mandatory to send the latest invoice version in version when calling PUT /invoices/{invoiceId} endpoint. Use GET /invoices or GET /invoices/{invoiceId} to obtain the latest invoice version. When trying to update invoice with an older invoice version, API now returns error code 400 with proper error message. Note this change applies only to the latest API version.

No new API release in January, 2024

Changes in version 23.12

Endpoints

  • From GET /businesspartners/personaldetails endpoint, following fields in BusinessPartnerPaymentDetails have been removed as they do not belong to a Person in Person register:

    • cashDiscountDays
    • cashDiscountPercentage

  • Documentation for query parameter originalInvoiceNumber in GET /invoices endpoint has been changed from integer to string in all API versions. Note, API request was already accepting string.

  • POST /invoices, PUT /invoices/{invoiceId} and GET /invoices/{invoiceId} endpoints now support 1 - 3 cash discount options in CashDiscountOption. When sending more than 1 cash discount option in POST /invoices or PUT /invoices/{invoiceId} endpoint:

    • numberOfDays and discountPercentage must be unique
    • Smaller numberOfDays must have bigger discountPercentage
    • discountPercentage must be less than 100

    Otherwise in the above cases, API returns 400 error response.

    Provided cash discount options are saved in ascending order by numberOfDays.

  • POST /businesspartners, PUT /businesspartners/{id}, PATCH /businesspartners/{id} and GET /businesspartners/{id} endpoints now support 1 - 3 cash discount options in CashDiscountOption. When sending more than 1 cash discount option in POST /businesspartners, PUT /businesspartners/{id} or PATCH /businesspartners/{id} endpoint:

    • numberOfDays and discountPercentage must be unique
    • Smaller numberOfDays must have bigger discountPercentage
    • discountPercentage must be less than 100

    Otherwise in the above cases, API returns 400 error response.

    Provided cash discount options are saved in ascending order by numberOfDays.

  • GET /businesspartners/personaldetails endpoint now returns currently logged in user's invoicing information from Person register in the newly added object BasicInvoicingInfo, which contains customerNumber, identifierType and identifier. If the values for these fields are missing, empty invoicingInfo is returned.

  • From now on PUT /invoices/{invoiceId}/verify and PUT /invoices/{invoiceId}/approve endpoints will validate VAT status / VAT% combination when verifying or approving invoices. If the invoice row has VAT% other than 0%, VAT status must be 'Domestic'. If this validation fails, API sends 400 error and invoice status isn't changed.

Changes in version 23.11

Endpoints

  • Following new optional fields have been added to cashDiscount in paymentInfo used in Invoice endpoints: GET /invoices/{invoiceId}, POST /invoices, PUT /invoices/{invoiceId}, and Business partners endpoints: GET /businesspartners/{id}, POST /businesspartners, PUT /businesspartners/{id}, PATCH /businesspartners/{id}

    • optionList that contains numberOfDays and discountPercentage
    • cashDiscountsTermType that indicates the start point for payment due date calculation and can be either FROM_INV_DATE or FROM_END_OF_MONTH. FROM_INV_DATE is default for all countries. FROM_END_OF_MONTH can be used only in Denmark.

      Still maximum 1 cash discount option is supported. Any additional cash discount options sent in POST /invoices, PUT /invoices/{invoiceId}, POST /businesspartners, PUT /businesspartners/{id} or PATCH /businesspartners/{id} request will be ignored.

  • We have added a new validation rule when setting business partner group to inactive in PUT /businesspartners/groups/{id}. If a business partner group has been set as the Maksuvahti automated invoice sending exclusion group, that group cannot be set to inactive. If that is attempted, 400 error response is returned with descriptive error message. You should remove the group from Maksuvahti's "Prevent automatic transferring" setting in Procountor UI Management > Company info > Debt collection settings, to be able to set the business partner group inactive again.

  • GET /businesspartners/groups now supports filtering by type. Supported types are CUSTOMER, SUPPLIER and PERSON. For other type, API returns 400 error response.

Changes in version 23.10

Endpoints

  • In Swedish and Danish environments, receipts are now automatically assigned a new serial number when financial year is closed. This is to ensure an unbroken receipt series and prevent invalidation after year is closed.

    • Purchase invoice, sales invoice, expense claim, travel invoice and journal with a serial number can not be invalidated anymore with PUT /invoices/{invoiceId}/invalidate request. Otherwise, 400 error response is returned.
    • Journal with a serial number can not be invalidated anymore with PUT /ledgerreceipts/{receiptId}/invalidate request. Otherwise, 400 error response is returned.
    • Journal with a serial number can not change its status to Unfinished through PUT /ledgerreceipts/{receiptId}/unfinished request. Otherwise, 400 error response is returned.

  • We have added a new optional field receiptNumber that returns number of the ledger receipt in GET /ledgerreceipts endpoint.

  • From now on, API sends 403 error response when trying to delete payment event in MARKED_PAID status that was created by credit invoice allocation via DELETE /invoices/{invoiceId}/paymentevents/{paymentEventId} endpoint.
  • Bug in PUT /invoices/{invoiceId}/sendToCirculation that sent INVALID_BIC error when trying to approve Swedish purchase e-invoice, where the payment method was Bankgiro or Plusgiro has been fixed.

Others

  • Link to Privacy policy has been added to API login page. This has been implemented for all API versions.
  • Earlier in API login page, when trying to navigate back from “Company select” view, previous API UI login page was not displayed. This has now been fixed.
  • Examples of curl request for sending sensitive information has been added to API authentication and M2M authentication pages in API documentation.

Changes in version 23.09

Endpoints

  • To increase security, from now onwards request sent with URL parameters during API and M2M authentication in the following endpoints will receive HTTP 403 error code. This affects all API versions. But if you are already sending request parameters in body and not as params in URL - no change is required on your side.

    • /api/oauth/token
    • /api/oauth/key

  • We have added a new endpoint GET /invoice/{invoiceId}/image to fetch invoice image as PNG, one page at a time.

  • GET /products endpoint now supports filtering by product name, including part of product name.
  • In GET /businesspartners endpoint, it is now possible to filter business partners by part of partner name. Earlier, name header parameter supported only full match.

Changes in version 23.08

Endpoints

  • Following query parameters will no longer be supported. This change will affect all API versions. Those sensitive data need to be provided instead in their respective HTTP request headers.
    • username in GET /attachments
    • accountNumber in GET /bankstatements
    • name and identifier in GET /businesspartners
    • accountNumber in GET /referencepayments

Older release notes

Older release notes can be found from their own page.

Old release notes