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 23.11 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

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

Changes in version 23.06

Endpoints

  • In following endpoints, sensitive data can now be sent in HTTP header, which is the preferred way. This is supported in all API versions. Please note from Procountor release version 78.0.0 (API version 23.08) onwards, these data can't be sent in query parameters anymore.
    • username in GET /attachments
    • accountNumber in GET /bankstatements
    • name and identifier in GET /businesspartners
    • accountNumber in GET /referencepayments
  • When the invoice is paid in foreign currency, new optional fields paidCurrency and paidAmount in GET /invoices/{invoiceId}/paymentevents endpoint allows you to now view the payment events for the specified invoice in the paid currency.
  • When the invoice is paid in foreign currency, new optional fields paidCurrency and paidAmount in GET /invoices/{invoiceId}/paymentevents/{paymentEventId} endpoint allows you to now view the specified payment event for the specified invoice in paid currency.
  • When the invoice in foreign currency is marked as paid, new optional fields paidCurrency and paidAmount in GET /invoices/{invoiceId}/paymentevents/markpaid endpoint allows you to now view the amount in the paid currency.

Others

  • To login faster in API UI login page, it's now possible to save password in the browser so that credentials can be autofilled in the next login.
  • User can now easily choose the company to acccess to in API UI login page. As user types text in the company dropdown list, list gets sorted/filtered.

Changes in version 23.05

Endpoints

  • Batch endpoint GET /products/{ids}
    • Can now fetch up to 200 product details at a time when comma separated list of product IDs is sent in the request URL
    • Only resources with valid IDs are returned. The items in the result list are ordered by productID and does not contain duplicates
    • When multiple resources are requested, the result will contain a list of resources - even for 1 returned product details
    • When only a single ID is specified in the request, the return model will be same as in GET /products/{productId}
    • If more than 200 IDs are given, 400 error response is returned. If all the given IDs are invalid, 404 error response is returned. As long as the list of IDs contains at least one valid ID, the request won't return an error

No new API release in April, 2023

No new API release in March, 2023

Older release notes

Older release notes can be found from their own page.

Old release notes