API Reference

CreditEstimate

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.

OperationTypeLimit (API calls / s)Counts towards shared limit
GET /v1/invitationsShared6Yes
POST /v1/invitationsShared6Yes
GET /v1/invitations/{invitation-code}/credit-reportShared6Yes
GET /v1/invitations/{invitation-code}/credit-report/pdfShared6Yes
GET /v1/invitations/{invitation-code}/statusShared6Yes
GET /v1/user-journeys/{invitation-code}Shared6Yes

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:

  1. API-Consumer – Initiate and generate an invitation that can be shared with your end-user (e.g. the company that you want to assess).
  2. End-user - The end-user gives consent and authorizes their bank to share their transaction data with Rabobank CreditEstimate.
  3. End-user - After successful transaction sharing, a credit report is instantly created based on the retrieved transactions and additional data sources from Rabobank.
  4. End-user - The end-user chooses to whether or not to share the report with the API-Consumer.
  5. 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 scenarioModule NameRequestedModuleRequestedDateFromDateTo
TEST1001All is okayCASH_FLOW_ANALYSISTRUECREDIT_SCORETRUE
TEST1002Date range invalidCASH_FLOW_ANALYSISTRUECREDIT_SCORETRUE01/01/202031/01/2020
TEST1003SBI code not allowedCASH_FLOW_ANALYSISTRUECREDIT_SCORETRUE
TEST1004Organization too youngCASH_FLOW_ANALYSISTRUECREDIT_SCORETRUE
TEST1005CoC (KvK) not foundCASH_FLOW_ANALYSISTRUECREDIT_SCORETRUE
TEST1006External service unavailableCASH_FLOW_ANALYSISTRUECREDIT_SCORETRUE

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
TEST2001All 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
TEST3001The status of a specific invite is returned, in this case "INVITATION_INITIATED"
TEST3002The 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
TEST4001Requested report in JSON for specific invite is returned
TEST4002Requested report in JSON for specific invite is not available: "Credit report not available. It might become available later."
TEST4003Requested report in JSON for specific invite is not available: "No Credit report available. It will not become available later." The invitation is expired.
TEST4004Requested 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.