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
- Factoring
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:
- General information
- Account number
- Financial statement documents
- KYC related information
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.
- Buy
- Buy with Recourse
- Service (Invoice administration)
- 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.
- Agreement with Norion Bank, please contact Erik Andersson at client@norionbank.se.
- Valid API Key as provided by Norion Bank
Go live Prerequisites
Before go live, Norion Bank requires the following conditions has been met.
- The ERP system must be able to initiate the onboarding process - see Add application.
- 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.
- The ERP system must be able to handle credit notes
- 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.
- The information provided by the Get client summary endpoint must be available for the client
- 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.
- The expected answers are:
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:
- Buy
- Buy with recourse
- 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 |