NAV navbar
Examples

Introduction

This website describes the Norion Bank Factoring product provided through the Factoring API available at the Norion Bank API Portal.

The Factoring API handles factoring and invoice administration and the Onboarding API is used to create and administrate applications. The API's are designed to be used from selected ERP systems and requires authorization. For more details, see Prerequisites.

Product overview

The Norion Bank Factoring product enables businesses to sell invoices to Norion Bank. The typical reason for doing so is to improve short term cash flow while maintaining reasonable payment terms towards it's end customers.

Read more about Norion Bank Factoring at our webpage.

From a client perspective, the Norion Bank Factoring product consists of the following main concepts, each further explained below.

Onboarding

Onboarding refers to the process of signing the factoring agreement with Norion Bank through the Norion customer portal. In order to be able to sign the agreement, a new factoring application needs to be registered. This is done by calling the Add application endpoint.

Once the application is registered the applicant will be able to access the Norion customer portal and finish the application by providing necessary information and signing it digitally.

The following information is required:

The calling system may simplify the onboarding process by providing some of the above listed information though the API. However, certain information (e.g. AML, PEP and KYC related information) must be provided by the client manually. For more information about the onboarding API, see Onboarding API Reference.

The following table shows the information needed during onboarding and if it can be supplied using the API.

Information Automate through the API
Address information Yes
Contact information (name, E-mail, phone) Yes
Business description Yes
Age of the business Yes
Invoice currencies Yes
Account numbers Yes
Turnover Yes
Businesses as part of total customer base Yes
Advance payments used Yes
Advances bills used Yes
Payment terms used Yes
Requested limit Yes
Other information Yes
AML/KYC related questions No
Other documentation (balance sheet, income statement and account certificate) Yes
Signing the agreement No

Once the application is complete and signed by the applicant, Norion Bank will evaluate the client. There are two possible outcomes from this process:

Decision Description
Denied Norion Bank denies the client to sell invoices
Approved Norion Bank approves the client

In case of an approval from Norion Bank, the guarantors and client signatories will be provided with instructions on how to confirm the agreement by signing it. The information will be distributed by SMS and email.

When the agreement is fully signed, Norion Bank will activate the client and send a confirmation by email. The client can now start using the product.

Factoring

Factoring refers to the process of selling invoices to Norion Bank, typically done by selecting one or multiple invoices in the (calling) ERP system. There are multiple possible outcomes when selling an invoice (see table below). Norion Bank will always evaluate all options in the following order and offer the first accepted alternative. The calling system or the client cannot select or choose from the alternatives.

In some cases, Norion Bank will refuse all options, including Invoice Administration. This means the client needs to distribute the invoice themselves.

  1. Buy
  2. Buy with Recourse
  3. Service (Invoice administration)
  4. Denied
Decision (i.e. FactoringType) Description
Buy The invoice has been financed by Norion Bank. Funds will be transferred during the next business day to the account provided during onboarding. The status of the invoice will change from Open to Closed as soon as it is paid by the end customer.
Recourse The invoice has been financed by Norion Bank but will be automatically bought back by the client in case the end customer does not pay in due time (see details below). If this happens, the invoice will be handled according to the Invoice administration principle. Funds will be transferred during the next business day to the account provided during onboarding and the invoice status will follow the pattern of the above decision.
Service (Invoice administration) The invoice has not been financed by Norion Bank but will be administrated. I.e. it will be distributed to the end customer and debt collection services will be provided in case needed. Funds will be transferred as soon as the invoice is paid by the end customer.
Denied Norion Bank neither finances nor administrates this invoice. The client needs to distribute the invoice.

When attempting to sell an invoice, the calling system typically receives a 202 Accepted response. In order to determine the business outcome of the invoice, the status needs to be fetched using the Get invoice status endpoint.

For more details on how to sell an invoice, see Add single invoice. For more information and recommendations regarding how to poll the invoice status, see Get invoice status.

Recourse details

When the invoice with decision Recourse is overdue more than a certain number of days, it will be automatically bought back by the client. The invoice amount will be charged the balance account of the client. The debt will be settled when more invoices are financed by Norion Bank or when the client makes a deposit.

Recourse is typically used when the end customer has a low financial rating.

Credit notes

The process of sending credit notes is similar to the process of selling invoices. However, if the credit refers to an already sold invoice the credit note must match the invoice in terms of total amount and currency. The status of a Credit notes can be fetched in the same way as an invoice.

Statues and events on invoices

Each invoice has a status and may have multiple events connected to it. The following statuses are available:

Status description
Pending A new invoice that has been acknowledged but has not yet processed. All invoices will have this status initially but will change to Open, Closed or Cancelled as soon as it passes credit evaluation and AML-screening. As long as the invoice is in Pending state, the FactoringType (i.e. decision) is undecided.
Open The invoice is fully accepted and the FactoringType indicates Norion Banks credit decision (see above). It will stay Open until it has been fully paid by the end customer.
Closed The invoice has been fully paid by the end customer
Cancelled The invoice has been denied by Norion Bank (may occur at any time until Closed). Any previously determined factoring decision no longer applies.

The following events may occur:

Event Description
StoppedUntil The invoice is temporarily stopped and will not be sent for Debt Collection even if the due date is passed. The event contains the date when the invoice is released again.
Recoursed The date when the invoice was recoursed (i.e. bought back by the client).
Depreciated The date when the invoice was written off.
Payments Contains a list of payments on the invoice. Includes amount and payment date.
DebtCollectionStatus Indicates if the invoice has been sent for Debt Collection. Possible values: None, ReminderSent, InDebtCollection, Finished.

Balance account

Each client is given an balance account at Norion Bank. This is the account where funds are deposited and withdrawn during normal operation. For instance, when an invoice is financed, Norion Bank will deposit the invoice amount to the balance account and also withdraw the cost of financing. A daily disbursement will transfer the funds from the balance account to the account of the client (provided during onboarding), making the balance zero. The transactions of the balance account is exposed using the Get Account Transactions endpoint and the partner is encouraged to provide this information to the client.

General information

Prerequisites

The following prerequisites needs to be fulfilled in order to be able to use the API.

Go live Prerequisites

Before go live, Norion Bank requires the following conditions has been met.

  1. The ERP system must be able to initiate the onboarding process - see Add application.
  2. The ERP system must be able to handle all possible outcomes when selling an invoice (i.e. buy, recourse, service, denied) - see Get invoice status.
  3. The ERP system must be able to handle credit notes
  4. The client must be able to report when/if an invoice has been paid to the client instead of the factor - see Register direct payment.
  5. The information provided by the Get client summary endpoint must be available for the client
  6. The client must be able to see the result of each invoice sold - see Get invoice status.

Validation

Norion Bank Factoring API will validate invoices and credit notes on contract and business level and returns messages that describe the validation errors. Our recommendation is that you implement controls in your system so that the invoices cannot be sent before complying to these rules. Below are some of the most common validation errors that we recommend taking care of in the sending system.

Invoices

The following aspects are validated:

Property Valid if
Invoice.CurrencyCode In ClientSupportedCurrency
Invoice.DueDate != Empty
Invoice.DueDate Eq ClientTimeZone
Invoice.InvoiceDate != Empty
Invoice.InvoiceDate Eq ClientTimeZone
Invoice.TotalAmount > 0
Invoice.VatAmount >= 0
Invoice.VatAmount < Invoice.TotalAmount
Invoice.RoundingAmount != Empty
Invoice.InvoiceId Not already used
Invoice.InvoiceId != Empty
Invoice.InvoiceLines Eq Invoice.TotalAmount
Invoice.InvoiceLines Eq Invoice.VatAmount
Invoice.Customer.CustomerId != Empty
Invoice.Customer.OrganisationNumber != Empty
Invoice.Customer.BillingAddress.City != Empty
Invoice.Customer.BillingAddress.Zipcode != Empty
Invoice.Customer.CountryCode != Empty
Invoice.InvoiceLines[].VatAmount Sum of all VatAmount == Invoice.VatAmount
Invoice.InvoiceLines[].LineAmountInclVat (Sum of all LineAmountInclVat + Invoice.RoundingAmount) == Invoice.TotalAmount

See Invoice limitations and Invoice string formats for more specifics.

Credit notes

Property Valid if
Credit.TotalAmount > 0
Credit.VatAmount >= 0
Credit.VatAmount < Credit.TotalAmount
Credit.RoundingAmount != Empty
Credit.CreditId Not already used
Credit.CreditId != Empty
Credit.Customer.CustomerId != Empty
Credit.Customer.OrganisationNumber != Empty
Credit.Customer.BillingAddress.City != Empty
Credit.Customer.BillingAddress.Zipcode != Empty
Credit.Customer.CountryCode != Empty
Credit.CreditLines[].VatAmount Sum of all VatAmount == Credit.VatAmount
Credit.CreditLines[].LineAmountInclVat (Sum of all LineAmountInclVat + Credit.RoundingAmount) == Credit.TotalAmount

See Credit note limitations and Credit note string formats for more specifics.

Onboarding API Reference

Add application

Add application:

POST /factoring/api/v1/Onboarding/applications HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "application": {
    "companyContact": {
      "name": "string",
      "emailAddress": "string",
      "telephoneNumber": "string",
      "countryCode": "string"
    },
    "companyAddress": {
      "address1": "string",
      "address2": "string",
      "zipCode": "string",
      "city": "string",
      "country": "string"
    },
    "businessDescription": "string",
    "currencies": [
      {
        "currency": "SEK",
        "accountNumber": "string"
      }
    ],
    "turnover": 0.0,
    "billInAdvance": true,
    "billBeforeWorkIsFullyDone": true,
    "averageDueDays": "Days14",
    "existedForMoreThanOneYear": true,
    "shareOfBusinessCustomers": 0.0,
    "requestedLimit": 0.0,
    "otherInformation": "string",
    "sellBillInAdvanceInvoices": true
  },
  "applicant": {
    "name": "string",
    "personalIdentityNumber": "string",
    "countryCode": "string",
    "emailAddress": "string",
    "telephoneNumber": "string"
  },
  "organisationNumber": "string",
  "companyName": "string",
  "countryCode": "string",
  "externalClientId": "string",
  "guarantors": [
    {
      "name": "string",
      "personalIdentityNumber": "string",
      "countryCode": "string",
      "emailAddress": "string",
      "telephoneNumber": "string"
    }
  ]
}

Add application response:

{
  "applicationId": "string",
  "status": "Open",
  "companyName": "string",
  "signees": [
    {
      "signeeStatus": [
        {
          "title": "string",
          "signed": true
        }
      ],
      "name": "string",
      "personalIdentityNumber": "string",
      "countryCode": "string",
      "emailAddress": "string",
      "telephoneNumber": "string"
    }
  ]
}

This endpoint is called to register/create a new application for a specific client.

The applicant will be allowed access to the Norion Portal and finish the application from there. For further details, please visit the Norion Bank API Portal.

Code Description Details
200 OK Application created
400 Bad Request Bad request when validation of request fails
401 Unauthorized Unauthorized when authorization token is not correct
403 Forbidden Permission denied if the authorization does not have correct permissions
500 Internal Server Error Internal Server Error when there is an unknown internal error
503 Service Unavailable Service Unavailable when internal services does not respond

Update application

Update application:

POST /factoring/api/v1/Onboarding/applications/{applicationId} HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "application": {
    "companyContact": {
      "name": "string",
      "emailAddress": "string",
      "telephoneNumber": "string",
      "countryCode": "string"
    },
    "companyAddress": {
      "address1": "string",
      "address2": "string",
      "zipCode": "string",
      "city": "string",
      "country": "string"
    },
    "businessDescription": "string",
    "currencies": [
      {
        "currency": "SEK",
        "accountNumber": "string"
      }
    ],
    "turnover": 0.0,
    "billInAdvance": true,
    "billBeforeWorkIsFullyDone": true,
    "averageDueDays": "Days14",
    "existedForMoreThanOneYear": true,
    "shareOfBusinessCustomers": 0.0,
    "requestedLimit": 0.0,
    "otherInformation": "string",
    "sellBillInAdvanceInvoices": true
  },
  "guarantors": [
    {
      "name": "string",
      "personalIdentityNumber": "string",
      "countryCode": "string",
      "emailAddress": "string",
      "telephoneNumber": "string"
    }
  ]
}

This endpoint is called to update a application with additional information for a specific client. To be used by third party integrators

Code Description Details
204 No content Application updated
400 Bad Request Bad request when validation of request fails
401 Unauthorized Unauthorized when authorization token is not correct
403 Forbidden Permission denied if the authorization does not have correct permissions
500 Internal Server Error Internal Server Error when there is an unknown internal error
503 Service Unavailable Service Unavailable when internal services does not respond

Add files to application

Add files to application:

POST /factoring/api/v1/Onboarding/applications/{applicationId}/files HTTP/1.1
Host: api.norionbank.se
applicationId: <From add application response>
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

This endpoint takes a multipart/form-data file with the following accepted names (bankgiroScreenshot, annualReportLastYear, incomeStatementYearToDate, balanceSheetYearToDate, confirmationOfPaidCapital, proofOfOwnership).

Use this endpoint to provide financial statements for the client. This is not mandatory but the applicant will be asked to provide the files in the Norion Bank Portal if not provided. Adding files is not needed if Add Income statement and Add Balance sheet is used. For further details, please visit the Norion Bank API Portal.

Code Description Details
201 Created File has been saved
400 Bad Request Bad request when validation of request fails
401 Unauthorized Unauthorized when authorization token is not correct
403 Forbidden Permission denied if the authorization does not have correct permissions
500 Internal Server Error Internal Server Error when there is an unknown internal error
503 Service Unavailable Service Unavailable when internal services does not respond

Add income statement

Add income statement:

POST /factoring/api/v1/Onboarding/applications/{applicationId}/incomestatementinformation HTTP/1.1
Host: api.norionbank.se
applicationId: Application id
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "incomeStatementInformations": [
    {
      "incomeStatement": {
        "revenue": 0,
        "costOfGoods": 0,
        "externalCosts": 0,
        "personelCosts": 0,
        "otherIncomeOrCostsFromOperations": 0,
        "depreciations": 0,
        "interestIncome": 0,
        "interestExpense": 0,
        "otherFinancialIncomeOrExpense": 0,
        "allocations": 0,
        "extraordinaryIncome": 0,
        "extraordinaryExpense": 0,
        "tax": 0
      },
      "incomeStatementYear": 0,
      "incomeStatementMonth": 0
    }
  ]
}

Use this endpoint to provide income statement information as it makes the manual onboarding easier. For further details, please visit the Norion Bank API Portal.

Add balance sheet

Add income statement:

POST /factoring/api/v1/Onboarding/applications/{applicationId}/balancesheetinformation HTTP/1.1
Host: api.norionbank.se
applicationId: Application id
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "balanceSheetInformations": [
    {
      "balanceSheet": {
        "properties": 0,
        "equipment": 0,
        "sharesInSubsidiaries": 0,
        "shares": 0,
        "otherFixedAssets": 0,
        "receivables": 0,
        "inventory": 0,
        "otherInventoryAssets": 0,
        "cash": 0,
        "tiedCapital": 0,
        "unrestrictedEquity": 0,
        "notTaxedCapital": 0,
        "provisions": 0,
        "newLoan": 0,
        "financeCompanyLiabilities": 0,
        "payables": 0,
        "otherLongTermLiabilities": 0,
        "taxLiabilities": 0,
        "otherCurrentLiabilities": 0
      },
      "balanceSheetTimestamp": "2019-03-01T100:00:00.000Z"
    }
  ]
}

Use this endpoint to provide balance sheet information as it makes the manual onboarding easier. For further details, please visit the Norion Bank API Portal.

Get list of applications

Get list of application:

GET /factoring/api/v1/Onboarding/applications[?applicationStatus] HTTP/1.1
Host: api.norionbank.se
applicationStatus: Application status
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response:

{
  "applications": [
    {
      "applicationId": "string",
      "status": "Open",
      "companyName": "string",
      "signees": [
        {
          "signeeStatus": [
            {
              "title": "string",
              "signed": true
            }
          ],
          "name": "string",
          "personalIdentityNumber": "string",
          "countryCode": "string",
          "emailAddress": "string",
          "telephoneNumber": "string"
        }
      ]
    }
  ]
}

For further details, please visit the Norion Bank API Portal.

Get application status

Get application status:

GET /factoring/api/v1/Onboarding/applications/{applicationId} HTTP/1.1
Host: api.norionbank.se
applicationId: <From add application response>
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response:

{
  "applicationId": "string",
  "status": "Open",
  "companyName": "string",
  "signees": [
    {
      "signeeStatus": [
        {
          "title": "string",
          "signed": true
        }
      ],
      "name": "string",
      "personalIdentityNumber": "string",
      "countryCode": "string",
      "emailAddress": "string",
      "telephoneNumber": "string"
    }
  ]
}

Use this endpoint to get latest status on a specific Application.

The following table describes the different statuses and suggestions on how it's presented to the client.

Status Description Suggested communication to client
Open The application is registered but not complete. This client needs to complete and submit the application using the Norion Bank customer portal. Application not complete - waiting for client to submit the application
Audit The client has submitted the application. The application is currently being evaluated by Norion Bank. Waiting for approval from Norion Bank
Denied The application was denied by Norion Bank and the client will not be able to use the product. Denied by Norion Bank
Approved The application was approved by Norion Bank and an agreement ready to be signed is available in the Norion Bank customer portal. Approved by Norion Bank - waiting for client to sign
Signed The client has signed the agreement and activation on Norion Bank side is in progress. It is not yet possible to send invoices. Application signed - activation by Norion Bank in progress
Onboarded The onboarding process is completed and the client is activated. The client can now start using the product. Onboarding completed
Deleted The application has been cancelled and will not be further evaluated. Application cancelled

For further details, please visit the Norion Bank API Portal.

Factoring API Reference

Add single invoice

Add single invoice:

POST /factoring/api/v3/Clients/{clientId}/invoice HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "invoice": {
    "invoiceId": "string",
    "customer": {
      "customerId": "string",
      "name": "string",
      "name2": "string",
      "countryCode": "string",
      "organisationNo": "string",
      "billingAddress": {
        "streetAddress": "string",
        "streetAddress2": "string",
        "zipcode": "string",
        "city": "string"
      },
      "email": "string",
      "vatNo": "string",
      "glnNo": "string",
      "language": "string",
      "phoneNo": "string"
    },
    "shipping": {
      "name": "string",
      "name2": "string",
      "streetAddress": "string",
      "streetAddress2": "string",
      "zipcode": "string",
      "city": "string",
      "countryCode": "string"
    },
    "amounts": {
      "totalAmount": 0.0,
      "vatAmount": 0.0,
      "roundingAmount": 0.0
    },
    "references": {
      "paymentRefNo": "string",
      "ourReference": "string",
      "yourReference": "string",
      "yourReferenceCode": "string"
    },
    "currencyCode": "string",
    "dates": {
      "dueDate": "string",
      "invoiceDate": "string",
      "orderDate": "string",
      "deliveryDate": "string"
    },
    "externalOrderNo": "string",
    "packageNo": "string",
    "deliveryOption": "string",
    "additionalInformation": {
      "termsOfDelivery": "string",
      "shippingReference": "string",
      "deliveryMethod": "string",
      "contractNumber": "string",
      "internalOrderNo": "string",
      "vatBaseCurrency": "string",
      "reverseCharge": "string",
      "freeText": ["string"]
    },
    "invoiceLines": [
      {
        "itemNo": "string",
        "description": "string",
        "unitOfMeasure": "string",
        "quantity": 0.0,
        "unitPrice": 0.0,
        "vatPct": 0.0,
        "vatAmount": 0.0,
        "discountPct": 0.0,
        "lineAmountExclVat": 0.0,
        "lineAmountInclVat": 0.0
      }
    ]
  }
}

Add a single invoice (asynchronous). The API return a 202 Accepted on success, and the calling system needs to use the Get invoice status. If there are errors returned, such as Bad Request, the body will have information about the error. For further details, please visit the Norion Bank API Portal.

Example of validation error result:

{
  "message": "Validation failed",
  "isError": true,
  "errors": {
    "invoice.Amounts.TotalAmount": [
      "'Total Amount' must be between 0 and 999999999999999,0. You entered -100."
    ],
    "invoice.Customer.OrganisationNo": [
      "'Organisation No' must be between 1 and 20 characters. You entered 0 characters."
    ]
  }
}

Validation of invoiceLines

When supplying the invoicelines it is important to be aware of how to do the rounding and summation.

We allow two decimals for vatAmount, lineAmountExclVat and lineAmountInclVat. For quantity and unitPrice we allow up to five decimals.

The sum of invoice lines amounts must match invoice amounts (total amount + rounding amount) exactly.

SUM(invoiceLines.vatAmount) = vatAmount
SUM(invoiceLines.lineAmountInclVat) = totalAmount + rounding amount

The line amounts with and without VAT must match exactly.

vatAmount + lineAmountExclVat = lineAmountInclVat

The line amounts must match exactly when rounded to two decimals.

unitPrice * quantity * vatPct/100 * (1-discountPct/100) = vatAmount
unitPrice * quantity * (1-discountPct/100) = lineAmountExclVat

Invoice limitations

Property Character Limit Details
InvoiceId 20 400 Bad Request will be returned if the value exceeds the limit
Customer.Name 50 If exceeds the limit and Customer.Name2 is empty, the value will be split and placed into Customer.Name2
Customer.Name2 50 400 Bad Request will be returned if the value exceeds the limit
Customer.PhoneNo 30 400 Bad Request will be returned if the value exceeds the limit
Customer.Email[] 80 400 Bad Request will be returned if the value exceeds the limit
Customer.OrganisationNo 20 400 Bad Request will be returned if the value exceeds the limit
Customer.BillingAddress.Zipcode 20 400 Bad Request will be returned if the value exceeds the limit
Customer.BillingAddress.City 30 400 Bad Request will be returned if the value exceeds the limit
Customer.BillingAddress.StreetAddres 30 If exceeds the limit and Customer.BillingAddress.StreetAddres2 is empty, the value will be split and placed into Customer.BillingAddress.StreetAddres2
Customer.BillingAddress.StreetAddres2 30 400 Bad Request will be returned if the value exceeds the limit
Shipping.Name 50 If exceeds the limit and Shipping.Name2 is empty, the value will be split and placed into Shipping.Name2
Shipping.Name2 50 400 Bad Request will be returned if the value exceeds the limit
Shipping.StreetAddres 30 If exceeds the limit and Shipping.StreetAddres2 is empty, the value will be split and placed into Shipping.StreetAddres2
Shipping.StreetAddres2 30 400 Bad Request will be returned if the value exceeds the limit
ExternalOrderNumber 20 400 Bad Request will be returned if the value exceeds the limit
References.OurReference 30 400 Bad Request will be returned if the value exceeds the limit
References.YourReference 30 400 Bad Request will be returned if the value exceeds the limit
InvoiceLines[].UnitOfMeasure 10 400 Bad Request will be returned if the value exceeds the limit
InvoiceLines[].ItemNo 20 400 Bad Request will be returned if the value exceeds the limit
InvoiceLines[].Description 80 400 Bad Request will be returned if the value exceeds the limit

Invoice string formats

Property Format
CurrencyCode ISO 4217
CountryCode ISO 3166-1 alpha-2
Language ISO 639-1
DeliveryOption 0 or Undefined, 1 or Email, 2 or Apost or 3 or Einvoice

Add multiple invoices

Add multiple invoices:

POST /factoring/api/v3/Clients/{clientId}/invoices HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

For further details, please visit the Norion Bank API Portal.

Add invoice file and attachment

Add invoice files and attachments corresponding to an invoice:

POST /factoring/api/v3/Clients/{clientId}/documents/{documentId} HTTP/1.1
Host: api.norionbank.se
documentId: <From add single invoice response or add single credit response>
channelId: <Provided by Norion Bank>
Content-Type: multipart/form-data
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
Content-Disposition: form-data; name="File"; filename=""
Content-Disposition: form-data; name="Type"

Use this endpoint to provide a copy of the invoice and/or attachment(s) for the invoice. Attachments will be distributed together with the invoice and the invoice copy is used for internal purposes at Norion Bank.

This endpoint takes a multipart/form-data request body with two values, File and Type. Type is an enum with the value Invoice, Credit or Attachment and File is the file you provide.

Code Description Details
201 Created File has been saved
400 Bad Request Bad request when validation of request fails
401 Unauthorized Unauthorized when authorization token is not correct
403 Forbidden Permission denied if the authorization does not have correct permissions
500 Internal Server Error Internal Server Error when there is an unknown internal error
503 Service Unavailable Service Unavailable when internal services does not respond

Add single credit note

Add single credit note:

POST /factoring/api/v3/Clients/{clientId}/credit HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "credit": {
    "creditId": "string",
    "orderId": "string",
    "customer": {
      "customerId": "string",
      "name": "string",
      "name2": "string",
      "countryCode": "string",
      "organisationNo": "string",
      "billingAddress": {
        "streetAddress": "string",
        "streetAddress2": "string",
        "zipcode": "string",
        "city": "string"
      },
      "email": "string",
      "vatNo": "string",
      "glnNo": "string",
      "language": "string",
      "phoneNo": "string"
    },
    "references": {
      "paymentRefNo": "string",
      "creditRefNo": "string",
      "ourReference": "string",
      "yourReference": "string",
      "yourReferenceCode": "string"
    },
    "dates": {
      "creditDate": "string",
      "orderDate": "string",
      "deliveryDate": "string"
    },
    "amounts": {
      "totalAmount": 0.0,
      "vatAmount": 0.0,
      "roundingAmount": 0.0
    },
    "currencyCode": "string",
    "deliveryOption": "string",
    "additionalInformation": {
      "contractNumber": "string",
      "internalOrderNo": "string",
      "vatBaseCurrency": "string",
      "reverseCharge": "string",
      "freeText": ["string"]
    },
    "creditLines": [
      {
        "itemNo": "string",
        "description": "string",
        "unitOfMeasure": "string",
        "quantity": 0.0,
        "unitPrice": 0.0,
        "vatPct": 0.0,
        "vatAmount": 0.0,
        "discountPct": 0.0,
        "lineAmountExclVat": 0.0,
        "lineAmountInclVat": 0.0
      }
    ]
  }
}

Similar to the Add single invoice but for credit note. This method is asynchronous.

The product does full and partial credits. In case of a full credit the credit note must reference an invoice using the references.creditRefNo, and the amount and currency of the credit must match that of the invoice. The API return 202 Accepted on success, and the calling ERP system must fetch the status using Get credit status.

If there are errors returned, such as Bad Request, the body will have information about the error in a similar way as described in Add single invoice. For further details, please visit the Norion Bank API Portal.

Credit note limitations

Property Character Limit Details
Customer.PhoneNo 30 400 Bad Request will be returned if the value exceeds the limit
Customer.OrganisationNo 20 400 Bad Request will be returned if the value exceeds the limit
Customer.Email[] 80 400 Bad Request will be returned if the value exceeds the limit
Customer.Name 50 If exceeds the limit and Customer.Name2 is empty, the value will be split and placed into Customer.Name2
Customer.Name2 50 400 Bad Request will be returned if the value exceeds the limit
Customer.BillingAddress.Zipcode 20 400 Bad Request will be returned if the value exceeds the limit
Customer.BillingAddress.City 30 400 Bad Request will be returned if the value exceeds the limit
Customer.BillingAddress.StreetAddres 30 If exceeds the limit and Customer.BillingAddress.StreetAddres2 is empty, the value will be split and placed into Customer.BillingAddress.StreetAddres2
Customer.BillingAddress.StreetAddres2 30 400 Bad Request will be returned if the value exceeds the limit
OrderId 20 400 Bad Request will be returned if the value exceeds the limit
References.OurReference 30 400 Bad Request will be returned if the value exceeds the limit
References.YourReference 30 400 Bad Request will be returned if the value exceeds the limit
CreditLines[].UnitOfMeasure 10 400 Bad Request will be returned if the value exceeds the limit
CreditLines[].ItemNo 20 400 Bad Request will be returned if the value exceeds the limit
CreditLines[].Description 160 400 Bad Request will be returned if the value exceeds the limit

Credit note string formats

Property Format
CurrencyCode ISO 4217
CountryCode ISO 3166-1 alpha-2
Language ISO 639-1
DeliveryOption 0 or Undefined, 1 or Email, 2 or Apost or 3 or Einvoice

Add multiple credit notes

Add multiple credit notes:

POST /factoring/api/v3/Clients/{clientId}/credits HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

For further details, please visit the Norion Bank API Portal.

Get invoice status

Get invoice status:

GET /factoring/api/v3/Clients/{clientId}/invoices/{invoiceId} HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response:

{
  "clientId": "string",
  "invoiceStatusResult": {
    "invoiceId": "string",
    "factoringType": "Denied",
    "status": "Pending",
    "currencyCode": "string",
    "totalAmount": 0,
    "remainingAmount": 0,
    "financingFeeAmount": 0,
    "adminFeeAmount": 0,
    "distributionFeeAmount": 0,
    "paymentReference": "string",
    "recoursedOn": "2021-03-21T09:31:46.880Z",
    "stoppedUntil": "2021-03-21T09:31:46.880Z",
    "depreciatedOn": "2021-03-21T09:31:46.880Z",
    "debtCollection": "None",
    "decisionReasons": [1001, 1002],
    "payments": [
      {
        "date": "2021-03-21T09:31:46.880Z",
        "amount": 0
      }
    ],
    "lastSync": "2021-10-21T12:02:43.119Z",
    "hasInvoiceCopy": false
  }
}

lastSync is shown in UTC

Initially, all invoices will have status Pending until it has been processed by the Norion Bank.

Code Description
404 Not Found - it has not yet been processed.
200 OK and Status Pending - the invoice is being processed
200 OK and Status Cancelled - the invoice was not accepted
200 OK and status Open - the invoice is accepted

As described on page Product Overview, all invoices are evaluated in three steps:

  1. Buy
  2. Buy with recourse
  3. Service (Invoice administration)

The most common reasons for not financing an invoice is 1003, 1005 and 1007.

For further details, please visit the Norion Bank API Portal.

Get credit status

Get credit status:

GET /factoring/api/v3/Clients/{clientId}/credits/{creditId} HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response:

{
  "clientId": "string",
  "creditStatusResult": {
    "creditId": "string",
    "factoringType": "Denied",
    "status": "Pending",
    "reason": "string",
    "currencyCode": "string",
    "totalAmount": 0,
    "remainingAmount": 0,
    "financingFeeAmount": 0,
    "adminFeeAmount": 0,
    "distributionFeeAmount": 0,
    "paymentReference": "string",
    "recoursedOn": "2021-03-21T09:41:16.556Z",
    "stoppedUntil": "2021-03-21T09:41:16.556Z",
    "depreciatedOn": "2021-03-21T09:41:16.556Z",
    "debtCollection": "None",
    "lastSync": "2021-10-21T12:02:43.119Z"
  }
}

lastSync is shown in UTC

For further details, please visit the Norion Bank API Portal.

Get invoices status

Get invoices status:

GET /factoring/api/v3/Clients/{clientId}/invoices HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response:

{
  "clientId": "string",
  "invoiceStatusResults": [
    {
      "invoiceId": "string",
      "factoringType": "Denied",
      "status": "Pending"
    }
  ]
}

For further details, please visit the Norion Bank API Portal.

Get credits status

Get credits status:

GET /factoring/api/v3/Clients/{clientId}/credits HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response:

{
  "clientId": "string",
  "creditStatusResults": [
    {
      "creditId": "string",
      "factoringType": "Denied",
      "status": "Pending"
    }
  ]
}

For further details, please visit the Norion Bank API Portal.

Set Invoice Distributed

Set Invoice Distributed:

PATCH /factoring/api/v3/Clients/{clientId}/invoices/{invoiceId} HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "distributed": true
}

This endpoint is used to indicate if the invoice has already been distributed or not. Use this endpoint to set the distribution status to true meaning that it has been distributed For further details, please visit the Norion Bank API Portal.

Register direct payment

Register direct payment:

POST /factoring/api/v3/Clients/{clientId}/invoices/{invoiceId}/payments HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>
{
  "payment": {
    "amount": 0,
    "currencyCode": "string",
    "comment": "string",
    "paymentDate": "string"
  }
}

Direct payment refers to when the end customer pays an invoice to the client rather than the factor (erroneously). The calling ERP system and/or the client may (automatically or manually) report direct payments to the factor using this endpoint. If this is done, Norion Bank will close the corresponding invoice.

Registering a direct payment is an asynchronous operation and will take a couple of minutes. The caller must poll for status change of the invoice to see that remaining amount is changed and if the invoice is closed. It is recommended to poll the invoice every 10th seconds.

It is possible to register payments in parts, as well as payment of the full remaining amount. If the full amount is registered, the invoice will be closed. Before registering the direct payment, the caller should poll for the latest status of the invoice, to get the remaining amount. It is not possible to register a payment larger than the remaining amount. Also, the currency must match the invoice currency and the direct payment date must not be older than the invoice and cannot be in the future.

Note! The direct payment does not include any transaction of money, but the balance account is adjusted.

For further details, please visit the Norion Bank API Portal.

Get client summary

Get client summary

GET /factoring/api/v3/Clients/{clientId}/summary HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response

{
  "currency": "string",
  "buyAmount": 0,
  "recoursedAmount": 0,
  "recourseAmount": 0,
  "serviceAmount": 0,
  "buyLimitAmount": 0,
  "recourseLimitAmount": 0,
  "invoicesAmount": 0,
  "expiredInvoicesAmount": 0,
  "expiredInvoicesWithRemindersSentAmount": 0,
  "debtAmount": 0,
  "debtCollectionAmount": 0,
  "creditedInvoicesAmount": 0,
  "totalAmount": 0,
  "financedAmount": 0,
  "accountTransactions": [
    {
      "amount": 0,
      "documentType": "string",
      "documentNumber": "string",
      "description": "string",
      "documentDate": "2019-03-21T09:45:18.511Z",
      "factoringDate": "2019-03-21T09:45:18.511Z",
      "postingDate": "2019-03-21T09:45:18.511Z"
    }
  ]
}

accountTransactions has been deprecated from this endpoint. You are only able to get the accountTransactions for the last 30 days.

This endpoint returns a summary of the client status. For instance, information about its limits, expired invoices and the balance account is included. This information must be available to the client in order to give a good overview of the product. Please also see E-mail notifications.

Parameter Description
buyAmount Total amount of financed invoices
recourseAmount The total amount of invoices financed with recourse and not yet reimbursed
serviceAmount The total amount of accepted invoices with factoringType Service (i.e. administration invoices plus reimbursed invoices)
invoicesAmount Total amount of all accepted invoices (All the above)
buyLimitAmount The finance limit of the client
recourseLimitAmount The recourse limit of the client
expiredInvoicesAmount Sum of all expired invoices
expiredInvoicesWithRemindersSentAmount Sum of all expired invoices with reminder sent
debtCollectionAmount Sum of all invoices sent for debt collection
creditedInvoicesAmount Sum of all accepted credit notes
recoursedAmount The total amount of invoices reimbursed by the client
totalAmount Account ledger of the client (i.e. invoicesAmount - creditedInvoicesAmount)
debtAmount Client account balance
financedAmount Total amount of all financed invoices (i.e. buyAmount + recourseAmount)

Suggestions on how the client summary can be presented to the client

For further details, please visit the Norion Bank API Portal.

Get client status

Get client status

GET /factoring/api/v3/Clients/{clientId}/status HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response

{
  "status": "Active"
}

This endpoint returns the current client status. API actions are validated against client status to verify that the client is authorized to perform the requested action.

Endpoint Active Blocked Terminated Pending
Add Invoice
Add Credit
Patch Invoice
Add Payment
Get Invoice
Get Credit
Get Client Summary
Get Client Status

For further details, please visit the Norion Bank API Portal.

Get account transactions

Get account transactions

GET /factoring/api/v3/Clients/{clientId}/transactions/{currencyCode}[?pageIndex][&pageSize][&from][&to] HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response

{
  "totalItems": 1,
  "totalPages": 1,
  "accountTransactions": [
    {
      "amount": -183781.74,
      "postingDate": "2021-03-16T00:00:00",
      "transactionType": "Invoice",
      "referenceNumbers": ["5568", "5569"],
      "information": "Description",
      "transactionCode": 1005,
      "currencyCode": "SEK",
      "subTransactions": [
        {
          "amount": -185325,
          "postingDate": "2021-03-16T00:00:00",
          "transactionType": "Invoice",
          "transactionCode": 1005,
          "currencyCode": "SEK",
          "subTransactions": []
        },
        {
          "amount": 30,
          "postingDate": "2021-03-16T00:00:00",
          "transactionType": "Fee",
          "transactionCode": 1013,
          "currencyCode": "SEK",
          "subTransactions": []
        },
        {
          "amount": 7.5,
          "postingDate": "2021-03-16T00:00:00",
          "transactionType": "Vat",
          "transactionCode": 1016,
          "currencyCode": "SEK",
          "subTransactions": []
        },
        {
          "amount": 1204.61,
          "postingDate": "2021-03-16T00:00:00",
          "transactionType": "Fee",
          "transactionCode": 1014,
          "currencyCode": "SEK",
          "subTransactions": []
        },
        {
          "amount": 301.15,
          "postingDate": "2021-03-16T00:00:00",
          "transactionType": "Vat",
          "transactionCode": 1015,
          "currencyCode": "SEK",
          "subTransactions": []
        }
      ]
    }
  ]
}

This endpoint returns a list of a clients account transactions between two dates, sorted in reverse chronological order (i.e. newest first).

Request parameters Description
clientId Client identifier
currencyCode Currency of format 4217:2015
pageIndex Zero-based index of the transactions page
pageSize Number of transactions per page. Max pagesize is 1000. Required
from From date, format yyyy-MM-dd
to To date, format yyyy-MM-dd
Parameter Description
totalItems Total number of transactions within the specified dates
totalPages Total number of pages of transactions within the specified dates
accountTransactions List of account transactions
Transactions parameter Description
amount Amount
currencyCode Code for the representation of currency (ISO 4217:2015)
postingDate Posting date
transactionType Credit, Payment, Invoice, Recourse, Disbursement, Fee or Other
referenceNumbers Reference(s) to the invoice(s) relevant to the transaction
information Additional information about the transaction
transactionCode Code identifying the type of transactions, i.e. the event causing the transaction to occur. See table below for details

List of transaction codes with suggested descriptions in English and Swedish.

Code EN SV Description
1001 Credit note administration fee Adminstrationsavgift kreditfaktura inklusive moms Withdrawal of fee for the administration of the credit note including VAT
1002 Credit note registered Kreditnota bokförd Withdrawal of credit note amount
1003 Credit note connected to reimbursed or service invoice Kreditnota kopplad till återköpt faktura eller servicefaktura Refund of credit note amount
1004 Payment added on service invoice Betalning av servicefaktura Refund of paid service invoice
1005 Invoice(s) financed Finansierade fakturor Regulation of balance account for booked invoice(s)
1006 Invoice reimbursed Återköp av faktura Withdrawal when invoice with factoring type Recourse is reimbursed
1007 Interest Ränta debiterad Withdrawal of invoice interest
1008 Depreciation Avskriven faktura Withdrawal of amount of depreciated invoice
1009 Direct payment registered Direktbetalning registrerad Withdrawal of amount for invoice paid directly to the client
1010 Disbursement Utbetalning Disbursement of balance account
1011 Service fee Årsavgift Withdrawal of limit/yearly fee
1012 Payment on reimbursed invoice Betalning av återköpt faktura Refund if end customer pays a reimbursed invoice
1013 Administration fee Administrationsavgift exklusive moms Withdrawal of administration fee excluding VAT
1014 Financing fee Finansieringsavgift exklusive moms Withdrawal of financing fee for invoice(s) excluding VAT
1015 Financing fee VAT Moms finansieringsavgift Withdrawal of VAT of the financing fee for invoice(s)
1016 Administration fee VAT Moms administrationsavgift Withdrawal of VAT of administration fee
1017 Payment discount Kassarabatt Withdrawal of cash discount
1018 Interest payment Räntebetalning Payment of default interest
1019 Balance account interest Kapitalisering av utlåningsränta Interest charged for debt on balance account
1020 Extra credit fee Extra kreditavgift A commission charged for postponing due date
1021 Reimbursed credit note Återbetalning av kreditfaktura Reimbursment of a credit note
1022 Payment tolerance Betalningstolerans Adjustment on balance account for payment tolerance
1023 Other costs Annan kostnad Unspecified cost
1024 Other payments Annan betalning Unspecified payment
1025 Credit note distribution fee Distributionsavgift kreditfaktura inklusive moms Withdrawal of fee for the distribution of the credit note including VAT
1026 Distribution fee Distributionsavgift exklusive moms Withdrawal of distribution fee excluding VAT
1027 Distribution fee VAT Moms distributionsavgift Withdrawal of VAT of distribution fee
1000 Other transaction Annan transaktion Unspecified transaction

In the example response, 183781.74 SEK was deposited to the balance account as a result of Norion Bank financing two invoices (invoice number 5568 and 5569).

For further details, please visit the Norion Bank API Portal.

Get contact information

Get contact information

GET /factoring/api/v3/Clients/{clientId}/contact HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/json-patch+json
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response

{
  "notificationEmails": ["client.email@norionbank.se"]
}

This endpoint returns a list of email addresses.

Get document PDF copy

Request

GET /factoring/api/v3/Clients/{clientId}/documents/{documentId} HTTP/1.1
Host: api.norionbank.se
channelId: <Provided by Norion Bank>
Content-Type: application/pdf
Ocp-Apim-Subscription-Key: <Provided by Norion Bank>

Response

The PDF file

This endpoint returns a copy of the PDF file connected to the document required.

Parameter Description
clientId Client identifier
documentId The documentId is provided by the client when the document is posted the first time. It could for example correspond to invoiceId or creditId.

E-mail notifications

Norion Bank will distribute the following emails to client and end customers.

End customer notifications

If an invoice has expired and is about to be exported to debt collection, an email is sent to the end customer as a warning/reminder. The email contains information about what needs to be done in order to avoid debt collection fees.

Glossary

Term Description
Client The business selling invoices to Norion Bank
Balance account Internal account of the client at Norion Bank, used when invoices are bought back and to adjust direct payments
Direct payment When an end customer pays the client rather than the factor
End customer The debtor who has the liability to make a payment to the owner of the invoice
Factor The party financing the invoice (i.e. Norion Bank)
Partner Company providing the ERP system used when integrating with Norion Bank Factoring API