CreditEstimate (CE) provides a current and detailed credit report of a Dutch SME based on the transaction data for up to 24 months from the present date. CreditEstimate uses Rabobank’s proprietary algorithms used for SME loan and credit acceptance.
With this API, you can:
- Save cost - Removes the need for annual figure analysis.
- Be Accurate - Best-in-class credit report based on up-to-date liquidity data.
- Be Secure - Bank-grade security and GDPR-compliant.
- Be Fast - A (conditional) offer within 3 minutes.
- Get broad coverage - Available for all Dutch SME entities and all Dutch banks.
As input, the CreditEstimate API accepts transaction data from Rabobank, ING, ABN Amro, Volksbank, Knab, SNS, ASN Bank, Triodos, and bunq. The output of the CreditEstimate API is a report in a JSON format containing a CreditScore and CashFlowAnalysis.
If API-consumers request information about the information modules in the credit report from an end user, two models are included:
- CreditScore: Provides a credit score based on Rabobank's assessment of an end user's Probability of Default (PD), meaning probability that an end user may not fulfil its financial obligations in the coming 12 months. This module requires a minimum of 12 calendar months of the user's transaction data.
- CashFlowAnalysis (CFA): Provides an overview of credits, debits, and balances (minimum, maximum, and end-of-month) per calendar month, as well as its resulting averages. This module requires a minimum of 3 calendar months of the user's data.
Rate Limiting
A default rate limit plan is set for all APIs. The rate limit can be shared or individual (defined per operation). The table below describes the rate limiting for this product.
Operation | Type | Limit (API calls / s) | Counts towards shared limit |
---|---|---|---|
GET /v1/invitations | Shared | 6 | Yes |
POST /v1/invitations | Shared | 6 | Yes |
GET /v1/invitations/{invitation-code}/credit-report | Shared | 6 | Yes |
GET /v1/invitations/{invitation-code}/credit-report/pdf | Shared | 6 | Yes |
GET /v1/invitations/{invitation-code}/status | Shared | 6 | Yes |
GET /v1/user-journeys/{invitation-code} | Shared | 6 | Yes |
Dataset
Sandbox
In Sandbox, you can use the examples as provided below or any valid subset. The resulting report is generated with example data, for errors and warnings hard coded responses are used.
Using the API
The CreditEstimate API operates through the following simple steps:
- API-Consumer – Initiate and generate an invitation that can be shared with your end-user (e.g. the company that you want to assess).
- End-user - The end-user gives consent and authorizes their bank to share their transaction data with Rabobank CreditEstimate.
- End-user - After successful transaction sharing, a credit report is instantly created based on the retrieved transactions and additional data sources from Rabobank.
- End-user - The end-user chooses to whether or not to share the report with the API-Consumer.
- API-Consumer- If shared, the API-Consumer can retrieve the credit report of the end-user.
Post invitation generation
The API-consumer calls CreditEstimate to generate a unique link for each end-user, this link can be put in an e-mail, placed behind a website button, or can be embedded in the flow.
- The invitation link is generated only if the user is eligible to use CreditEstimate, e.g. the company should have an active registration in the Dutch Chamber of Commerce.
- The default validity duration of the invite is set to 72 hours but can be customized on API-consumer’s request.
- After the end-user opens the invitation link, the user's email address and the company name are pre-filled.
Set up Callback functionality
Set up the call back functionality for CE SME, to receive instant status updates. The callBackSecret
is a password that you can generate/hash yourself. We send this back as a header for you to validate the request.
Add the callbackRegistration
to the Post Invitation as below:
Example request post:
{
// "createdBy": "a70a0545-ba48-4855-8945-4227798f3908",
"organizationDetails": {
"email": "[email protected]",
"kvkNumber": "123456789"
},
"callbackRegistration": {
"callbackUrl": "https://ce.requestcatcher.com/",
"callbackSecret": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
},
"requestedCreditReport": {
// "requestedDateRange": {
// "fromDate": "{{fromDate}}", // see 'scripts' of this request
// "toDate": "{{toDate}}" // see 'scripts' of this request
// // "fromDate": "2020-05-20",
// // "toDate": "2024-06-13"
// },
"modules": [
{
"name": "CASH_FLOW_ANALYSIS",
"requested": true
},
{
"name": "CREDIT_SCORE",
"requested": true
}
]
}
}
Read more about callbackRegistration, here: Credit estimate.
Examples
Create Invitation
Request
POST /dls-credit-estimate-api/v1/invitations
{
"organizationDetails": {
"email": "[email protected]",
"kvkNumber": "TEST1001"
},
"requestedCreditReport": {
"modules": [
{
"name": "CASH_FLOW_ANALYSIS",
"requested": true
},
{
"name": "CREDIT_SCORE",
"requested": true
}
]
}
}
Response
{
"invitationDetails": {
"invitationCode": "o1ju2teg",
"invitationUrl": "https://app.creditestimate.nl/?invitationCode=o1ju2teg",
"organizationDetails": {
"kvkNumber": "TEST0001",
"organizationName": "Organization under test",
"legalForm": "BESLOTEN_VENNOOTSCHAP"
}
},
"modules": [
{
"name": "CASH_FLOW_ANALYSIS",
"requested": true
},
{
"name": "CREDIT_SCORE",
"requested": true
}
]
}
KvK (test scenario) | Explanation scenario | Module Name | Requested | Module | Requested | DateFrom | DateTo |
---|---|---|---|---|---|---|---|
TEST1001 | All is okay | CASH_FLOW_ANALYSIS | TRUE | CREDIT_SCORE | TRUE | ||
TEST1002 | Date range invalid | CASH_FLOW_ANALYSIS | TRUE | CREDIT_SCORE | TRUE | 01/01/2020 | 31/01/2020 |
TEST1003 | SBI code not allowed | CASH_FLOW_ANALYSIS | TRUE | CREDIT_SCORE | TRUE | ||
TEST1004 | Organization too young | CASH_FLOW_ANALYSIS | TRUE | CREDIT_SCORE | TRUE | ||
TEST1005 | CoC (KvK) not found | CASH_FLOW_ANALYSIS | TRUE | CREDIT_SCORE | TRUE | ||
TEST1006 | External service unavailable | CASH_FLOW_ANALYSIS | TRUE | CREDIT_SCORE | TRUE |
Get Invitations
Request
GET https://api-sandbox.rabobank.nl/openapi/sandbox/credit-estimate/v1/invitations
Response
[
{
"createdAt": "2024-08-15T13:56:11.564069929Z",
"expiredAt": "2024-09-14T13:56:11.564070223Z",
"createdBy": "a70a0545-ba48-1234-8945-4227798f3908",
"invitationCode": "TESTAB01",
"invitationUrl": "https://app.creditestimate.nl/?invitationCode=TESTAB01",
"kvkNumber": "3456789",
"organizationName": "Test Bakery",
"organizationEmail": "[email protected]",
"status": {
"invitationStatus": "USER_SET_REPORT_SHARED",
"isCreditReportAvailable": true,
"creditReportAvailableUntil": "2024-09-14T13:56:11.564073619Z"
}
},
{
"createdAt": "2024-08-15T13:56:11.564078024Z",
"expiredAt": "2024-10-14T13:56:11.564078197Z",
"createdBy": "b80b0545-ba48-5678-8945-4227798f3908",
"invitationCode": "REPORT_DECISION_FALSE",
"invitationUrl": "https://app.creditestimate.nl/?invitationCode=TESTAB02",
"kvkNumber": "9876543",
"organizationName": "Test Butcher",
"organizationEmail": "[email protected]",
"status": {
"invitationStatus": "USER_SET_REPORT_NOT_SHARED",
"isCreditReportAvailable": false
}
}
]
Partner Code / API Key (test scenario) | Explanation scenario |
---|---|
TEST2001 | All available invites with details and statuses are listed for the partner. |
Get Invitation Status
Request
GET https://api-sandbox.rabobank.nl/openapi/sandbox/credit-estimate/v1/invitations/{invitation-code}/status
Response
{
"invitationStatus": "INVITATION_INITIATED",
"isCreditReportAvailable": false
}
Uitnodigingscode (test scenario) | Explanation scenario |
---|---|
TEST3001 | The status of a specific invite is returned, in this case "INVITATION_INITIATED" |
TEST3002 | The status of a specific invite is returned, in this case "USER_SET_REPORT_SHARED" |
Get credit report
You can choose to get the credit report in Json or PDF
Request
GET https://api-sandbox.rabobank.nl/openapi/sandbox/credit-estimate/v1/invitations/{invitation-code}/credit-report
Response
{
"generic": {
"generatedAt": "2024-08-15T14:03:44.414732276Z",
"invitationCode": "TEST4001",
"reportDateRange": {
"fromDate": "2024-08-15",
"toDate": "2023-08-15"
},
"organizationDetails": {
"kvkNumber": "12345678",
"organizationName": "Test Organization",
"legalForm": "BESLOTEN_VENNOOTSCHAP",
"foundationDate": "2022-08-15",
"sbiCodes": [
{
"code": "12345",
"main": true
},
{
"code": "67890",
"main": false
}
],
"bankAccounts": [
{
"iban": "NL12BANK0123456789"
}
]
}
},
"moduleResults": {
"creditScore": {
"creditScore": 8,
"probabilityOfDefault": 0.6,
"probabilityOfNonDefault": 99.4
},
"cashFlowAnalysis": {
"moduleStatus": {
"moduleStatus": "COMPLETE"
}
}
}
}
Uitnodigingscode (test scenario) | Explanation scenario |
---|---|
TEST4001 | Requested report in JSON for specific invite is returned |
TEST4002 | Requested report in JSON for specific invite is not available: "Credit report not available. It might become available later." |
TEST4003 | Requested report in JSON for specific invite is not available: "No Credit report available. It will not become available later." The invitation is expired. |
TEST4004 | Requested report in JSON for specific invite is not available anymore: "Credit report no longer available. It will not become available later." (after 30 days the credit report cannot be retrieved anymore). |
You can learn more about CreditEstimate using CreditEstimate.nl. You can request the password by contacting us.