Update on Dun & Bradstreet Scoring and Usage in Compliance with Sanctions on Russia.   Read more

Decision Migration Guide B2C

 

Target audience

This document is intended for technical resources and describes how to migrate from the old version 1 Decision B2C service to the new version 3 Decision B2C service (Risk Guardian Suite - RGS).
Processing a new B2C Decision

Decision Request

Endpoint

Method URL for old version 1 URL for new version 3
POST https://api.bisnode.com/decision/v1/person https://api.bisnode.com/decision/v3/person/{countryCode} 

Request body

Version 1 Version 3 Comment
subjectId nationalIdentificationNumber  
personId personId Norway only
countryCode --
Part of the URL in v3.
  • no for Norway
  • se for Sweden
  • fi for Finland
  • dk for Denmark
rulesetKey rulesetKey  
reference reference  
endUser endUser  
customerInput customerInput  
notificationOptions notificationOptions Norway only
language language  
decisionGround decisionGround Finland only
coApplicants coApplicants  

Person Decision Response

Check decision service v3 documentation on Developer Portal for decision response body in details.

Data Structure Changes

Comparison of structure change. Unchanged fields are omitted from this comparison.

Old structure in version 1 New structure in version 3
subjectData subjectData
  • subjectId
  • nationalIdentificationNumber
  • addresses
    • city / town
  • addresses
    • postalDistrict
scoreData
 
  • displayName
--
rulesetKey
ruleset
  • key
rulesetName

ruleset

  • name
rulesetOverallOutcome

decisionResult

  • decision
    • code
rulesetOverallOutcomeDescription

decisionResult

  • decision
    • label
ruleModulesRun

 

  • name

decisionResult

  • ruleModuleResults
    • moduleName
  • overallOutcome

decisionResult

  • ruleModuleResults
    • decision
      • code
  • overallOutcomeCode

--

  • usedSubjects

--

  • rulesRun
    • name

decisionResult

  • decisionReasons / rulesWithNoResult
    • rules
      • ruleName
    •  
  • rulesRun
    • reasonKey

decisionResult

  • decisionReasons / rulesWithNoResult
    • rules
      • reason
        • key
  • rulesRun
    •  usedValues
      • name

decisionResult

  • decisionReasons / rulesWithNoResult
    • rules
      • usedValues
        • key
  • rulesRun
    • confgParameters
      • name

decisionResult

  • decisionReasons / rulesWithNoResult
    • rules
      • parameters
        • key
  • rulesRun
    • ruleOutcomes
      • name

decisionResult

  • decisionReasons / rulesWithNoResult
    • rules
      • outcomes
        • key
  • rulesRun
    • usedSubjects
      • subjectId

decisionResult

  • decisionReasons / rulesWithNoResult
    • rules
      • usedSubjects
        • nationalIdentificationNumber
rulesetSummary

 

  • scoreData

--

  • reasonCode

decisionResult

  • decisionReasons
    • rules
      • reason
        • code
  • possible outcomes (e.g., limitApproved)

decisionResult

  • decision
    • outcomeSummary
      • key
      • value
rulesetOutcomes

 

  • name

decisionResult

  • decisionReasons
    • rules
      • outcomes
        • key
  • value

decisionResult

  • decisionReasons
    • rules
      • outcomes
        • value
date

decisionResult

  • decision
    • date
reference

userData

  • reference
endUser

userData

  • endUser

Person Decision Response example:

Comparison of decision response with example:
Old version 1
New version 3

{

    "rulesetOverallOutcome": "A",

    "rulesetOverallOutcomeDescription": "Approve",

    "correlationId": "6f74d02b-20bb-4529-ab30-dce9a809cf2c",

    "rulesetKey": "test-ruleset-key",

    "rulesetName": "Test ruleset",

    "subjectData": {

        "subjectId": "196512073245",

        "nationalIdentificationNumber": "196512073245",

        "intermittentId": false,

        "firstName": "Testperson Klara",

        "lastName": "Testsson",

        "name": "Testsson, Testperson *Klara*",

        "countryCode": "SE",

        "addresses": [

            {

                "type": "registeredAddress",

                "postalCode": "16993",

                "streetAddress": "Box 16993",

                "city": "SOLNA",

                "town": "SOLNA"

            }

        ]

    },

    "rulesetSummary": {

        "scoreData": {

            "scoreCardName": "Some scorecard",

            "displayName": "Some scorecard",

            "scoreValue": 530.0,

            "probabilityOfDefault": 0.2603625793837301,

            "probabilityOfDefaultAsPercentage": 26.03625793837301,

            "minimumScoreValue": 413.0,

            "maximumScoreValue": 740.0,

            "scoreCardGenre": "GENERIC",

            "riskClass": {

                "riskClassScaleName": "creditWorthiness",

                "riskClass": 1,

                "maximumScoreValueInclusive": 538.0,

                "description": "Credit not recommended from score"

            }

        },

        "reasonCode": [

            "AC102",

            "AS102"

        ]

    },

    "ruleModulesRun": [

        {

            "name": "Basic Data SEC",

            "overallOutcome": "A",

            "overallOutcomeCode": "AM3",

            "rulesRun": [

                {

                    "name": "Age above",

                    "reasonKey": "R112",

                    "usedValues": [

                        {

                            "name": "age",

                            "value": "56"

                        }

                    ],

                    "configParameters": [

                        {

                            "name": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "name": "cutoff",

                            "value": "40"

                        }

                    ],

                    "ruleOutcomes": [

                        {

                            "name": "decision",

                            "value": "approve"

                        },

                        {

                            "name": "reasonCode",

                            "value": "AR112"

                        }

                    ]

                },

                {

                    "name": "Age below",

                    "reasonKey": "R110",

                    "usedValues": [

                        {

                            "name": "age",

                            "value": "56"

                        }

                    ],

                    "configParameters": [

                        {

                            "name": "decision",

                            "value": "decline"

                        },

                        {

                            "name": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "name": "cutoff",

                            "value": "20"

                        }

                    ]

                }

            ]

        },

        {

            "name": "Credit Data SEC",

            "overallOutcome": "A",

            "overallOutcomeCode": "AM4",

            "rulesRun": [

                {

                    "name": "Score above",

                    "reasonKey": "S102",

                    "usedValues": [

                        {

                            "name": "score",

                            "value": "530.0"

                        }

                    ],

                    "configParameters": [

                        {

                            "name": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "name": "cutoff",

                            "value": "40"

                        }

                    ],

                    "ruleOutcomes": [

                        {

                            "name": "decision",

                            "value": "approve"

                        },

                        {

                            "name": "reasonCode",

                            "value": "AS102"

                        }

                    ]

                },

                {

                    "name": "Score below",

                    "reasonKey": "S100",

                    "usedValues": [

                        {

                            "name": "score",

                            "value": "530.0"

                        }

                    ],

                    "configParameters": [

                        {

                            "name": "decision",

                            "value": "decline"

                        },

                        {

                            "name": "missingDataDecision",

                            "value": "decline"

                        },

                        {

                            "name": "cutoff",

                            "value": "20"

                        }

                    ]

                },

                {

                    "name": "Score in range",

                    "reasonKey": "S101",

                    "usedValues": [

                        {

                            "name": "Score",

                            "value": "530.0"

                        }

                    ],

                    "configParameters": [

                        {

                            "name": "decision",

                            "value": "pending"

                        },

                        {

                            "name": "lowerCutoff",

                            "value": "20"

                        },

                        {

                            "name": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "name": "upperCutoff",

                            "value": "40"

                        }

                    ]

                }

            ]

        }

    ],

    "scoreData": [

        {

            "scoreCardName": "Some scorecard",

            "displayName": "Some scorecard",

            "scoreValue": 530.0,

            "probabilityOfDefault": 0.2603625793837301,

            "probabilityOfDefaultAsPercentage": 26.03625793837301,

            "minimumScoreValue": 413.0,

            "maximumScoreValue": 740.0,

            "scoreCardGenre": "GENERIC",

            "riskClass": {

                "riskClassScaleName": "creditWorthiness",

                "riskClass": 1,

                "maximumScoreValueInclusive": 538.0,

                "description": "Credit not recommended from score"

            }

        }

    ],

    "rulesetOutcomes": [

        [

            {

                "name": "decision",

                "value": "approve"

            },

            {

                "name": "reasonCode",

                "value": "AS102"

            }

        ],

        [

            {

                "name": "decision",

                "value": "approve"

            },

            {

                "name": "reasonCode",

                "value": "AC102"

            }

        ]

    ],

"date": "2022-10-24T13:07:11.123Z",

"endUser": "end user",

"reference": "reference",

    "userData": {

        "customerId": "Customer ID",

        "customerName": "Customer Name",

        "userId": "123456",

        "language": "en"

    }

}

{

    "correlationId": "6f74d02b-20bb-4529-ab30-dce9a809cf2c",

    "userData": {

        "customerId": "Customer ID",

        "customerName": "Customer Name",

        "userId": "123456",

        "endUser": "end user",

        "reference": "reference",

        "language": "en"

    },

    "scoreData": [

        {

            "scoreCardName": "Some scorecard",

            "scoreCardGenre": "GENERIC",

            "scoreValue": 530.0,

            "probabilityOfDefault": 0.2603625793837301,

            "probabilityOfDefaultAsPercentage": 26.03625793837301,

            "minimumScoreValue": 413.0,

            "maximumScoreValue": 740.0,

            "riskClass": {

                "riskClassScaleName": "creditWorthiness",

                "riskClass": 1,

                "maximumScoreValueInclusive": 538.0,

                "description": "Credit not recommended from score"

            }

        }

    ],

    "ruleset": {

        "key": "test-ruleset-key",

        "name": "Test ruleset",

        "version": "3"

    },

    "decisionResult": {

        "decision": {

            "code": "A",

            "label": "Approve",

            "date": "2022-10-24T13:07:11.123Z",

            "by": "123456",

            "version": "1"

        },

        "ruleModuleResults": [

            {

                "moduleId": "secg2-basic-data-flow-1",

                "moduleName": "Basic Data SEC",

                "decision": {

                    "code": "A",

                    "label": "Approve"

                }

            },

            {

                "moduleId": "secg2-credit-data-flow-2",

                "moduleName": "Credit Data SEC",

                "decision": {

                    "code": "A",

                    "label": "Approve"

                }

            }

        ],

        "decisionReasons": {

            "rules": [

                {

                    "moduleId": "secg2-basic-data-flow-1",

                    "ruleId": "cf98363d6964433aadcfbabc714ee49d",

                    "ruleName": "Age above",

                    "reason": {

                        "key": "R112",

                        "label": "Age above NN",

                        "code": "AR112"

                    },

                    "missingData": false,

                    "decision": {

                        "code": "A",

                        "label": "Approve"

                    },

                    "outcomes": [

                        {

                            "key": "decision",

                            "value": "approve"

                        },

                        {

                            "key": "action",

                            "value": ""

                        },

                        {

                            "key": "reasonCode",

                            "value": "AR112"

                        }

                    ],

                    "usedValues": [

                        {

                            "key": "age",

                            "value": "56"

                        }

                    ],

                    "parameters": [

                        {

                            "key": "decision",

                            "value": "approve"

                        },

                        {

                            "key": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "key": "cutoff",

                            "value": "40"

                        }

                    ]

                },

                {

                    "moduleId": "secg2-credit-data-flow-2",

                    "ruleId": "8e0ec5491f0f42bf885b96fd8c26a159",

                    "ruleName": "Score above",

                    "reason": {

                        "key": "S102",

                        "label": "Score, above",

                        "code": "AS102"

                    },

                    "missingData": false,

                    "decision": {

                        "code": "A",

                        "label": "Approve"

                    },

                    "outcomes": [

                        {

                            "key": "decision",

                            "value": "approve"

                        },

                        {

                            "key": "action",

                            "value": ""

                        },

                        {

                            "key": "reasonCode",

                            "value": "AS102"

                        }

                    ],

                    "usedValues": [

                        {

                            "key": "score",

                            "value": "530.0"

                        }

                    ],

                    "parameters": [

                        {

                            "key": "decision",

                            "value": "approve"

                        },

                        {

                            "key": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "key": "cutoff",

                            "value": "40"

                        }

                    ]

                }

            ]

        },

        "rulesWithNoResult": {

            "rules": [

                {

                    "moduleId": "secg2-basic-data-flow-1",

                    "ruleId": "329e99a9a0614337a8d7d8fedb50cad9",

                    "ruleName": "Age below",

                    "reason": {

                        "key": "R110",

                        "label": "Age below NN"

                    },

                    "missingData": false,

                    "usedValues": [

                        {

                            "key": "age",

                            "value": "56"

                        }

                    ],

                    "parameters": [

                        {

                            "key": "decision",

                            "value": "decline"

                        },

                        {

                            "key": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "key": "cutoff",

                            "value": "20"

                        }

                    ]

                },

                {

                    "moduleId": "secg2-credit-data-flow-2",

                    "ruleId": "e84929468b9d46639d118e9c30f3575b",

                    "ruleName": "Score below",

                    "reason": {

                        "key": "S100",

                        "label": "Score, below"

                    },

                    "missingData": false,

                    "usedValues": [

                        {

                            "key": "score",

                            "value": "530.0"

                        }

                    ],

                    "parameters": [

                        {

                            "key": "decision",

                            "value": "decline"

                        },

                        {

                            "key": "missingDataDecision",

                            "value": "decline"

                        },

                        {

                            "key": "cutoff",

                            "value": "20"

                        }

                    ]

                },

                {

                    "moduleId": "secg2-credit-data-flow-2",

                    "ruleId": "822ef12c3fbc4b1a84696c66624d400a",

                    "ruleName": "Score in range",

                    "reason": {

                        "key": "S101",

                        "label": "Score, in range"

                    },

                    "missingData": false,

                    "usedValues": [

                        {

                            "key": "Score",

                            "value": "530.0"

                        }

                    ],

                    "parameters": [

                        {

                            "key": "decision",

                            "value": "pending"

                        },

                        {

                            "key": "lowerCutoff",

                            "value": "20"

                        },

                        {

                            "key": "missingDataDecision",

                            "value": "pending"

                        },

                        {

                            "key": "upperCutoff",

                            "value": "40"

                        }

                    ]

                }

            ]

        }

    },

    "subjectData": {

        "nationalIdentificationNumber": "196512073245",

        "intermittentId": false,

        "firstName": "Testperson Klara",

        "lastName": "Testsson",

        "name": "Testsson, Testperson *Klara*",

        "countryCode": "SE",

        "statuses": [],

        "addresses": [

            {

                "type": "registeredAddress",

                "postalCode": "16993",

                "streetAddress": "Box 16993",

                "postalDistrict": "SOLNA"

            }

        ],

        "test": true

    }

}

 

Fetching Background Data

Background Data Request

The only difference in background data request for person is the URL.

Endpoint

Method URL for old version 1 URL for new version 3
GET https://api.bisnode.com/decision/v1/person/{correlationId}/background https://api.bisnode.com/decision/v3/person/{correlationId}/background 

Background Data Response

NB! Data inside unchanged data segments are omitted from this doc for concision (e.g. “personData”:{}).

Country specific segments

Sweden
Version 1 Version 3 Comment

{

  "report": {

    "reportMetaData": {},

    "test": true,

    "report": {

      "personData": {},

      "scoreData": {

        "scoreValue": 530.0,

        "probabilityOfDefault": 0.2604,

        "probabilityOfDefaultAsPercentage": 26.04,

        "minimumScoreValue": 413.0,

        "maximumScoreValue": 740.0,

        "exclusionCodes": {},

        "score": {

          "scoreValue": 530.0,

          "value": 530.0,

          "probabilityOfDefault": {

            "percentage": 26.03625793837301,

            "probability": 0.2603625793837301

          }

        }

      },

      "creditWorthinessData": {

        "creditWorthiness": {

          "code": 1,

          "description": "Credit not recommended from score"

        }

      },

      "creditRegistryData": {},

      "bankruptcy": {},

      "currentRealEstatesData": {},

      "assessedRealEstatesData": {},

      "assessmentsData": {},

      "previousInquiriesData": {},

      "paymentData": {},

      "eventsData": {}

    }

  }

}

{

    "basicData": {

        "personData": {}

    },

    "creditData": {

        "bankruptcy": {},

        "currentRealEstatesData": {},

        "assessedRealEstatesData": {},

        "assessmentsData": {},

        "previousInquiriesData": {},

        "paymentData": {},

        "eventsData": {}

    },

    "creditsOverviewData": {

        "creditRegistryData": {}

    }

}
Unwrapped v1 report.report into modularized data segments, basicData, creditData, creditsOverviewData and scoring.
report.report.scoreData and report.report.creditWorthinessData are transformed into scoring data segment. creditWorthinessData can be found in scoring[*].score.riskClass.
report.report.scoreData is only generic score. It’s moved to scoring segment in v3.

 

{

  "scoreData": {

    "scoringResponseList": [

      {

        "scoreCardName": "Semi customized scorecard",

        "displayName": "Semi customized scorecard",

        "scoreCardGenre": "SEMI_CUSTOMIZED",

        "scoreValue": 530.0,

        "minimumScoreValue": 413.0,

        "maximumScoreValue": 740.0,

        "probabilityOfDefault": 0.2580,

        "probabilityOfDefaultAsPercentage": 25.80,

        "scoreModuleId": "Semi customized scorecard",

        "id": "196512073245",

        "score": 530.0,

        "pd": 0.2580,

        "scoreDate": "2022-10-24T16:20:01.15",

        "version": "1",

        "exclusionCodes": {}

      }

    ]

  }

}

{

  "scoring": [

    {

      "score": {

        "scoreValue": 530.0,

        "probabilityOfDefault": 0.2580,

        "probabilityOfDefaultAsPercentage": 25.80

      },

      "scoreCardConfiguration": {

        "scoreCardName": "Semi customized scorecard",

        "scoreCardGenre": "SEMI_CUSTOMIZED",

        "minimumScoreValue": 413.0,

        "maximumScoreValue": 740.0

      },

      "exclusionCodes": {}

    },

    {

      "score": {

        "scoreValue": 530.0,

        "probabilityOfDefault": 0.2604,

        "probabilityOfDefaultAsPercentage": 26.04,

        "riskClass": {

          "riskClassScaleName": "creditWorthiness",

          "riskClass": 1,

          "maximumScoreValueInclusive": 538.0,

          "description": "Credit not recommended from score"

        }

      },

      "scoreCardConfiguration": {

        "scoreCardName": "Generic scorecard ",

        "scoreCardGenre": "GENERIC",

        "minimumScoreValue": 413.0,

        "maximumScoreValue": 740.0

      },

      "exclusionCodes": {}

    }

  ]

}

v1 has only scores from non-generic scorecards. In v3, all scores from all scorecards are displayed in scoring segment.

 

Fields removed:

  • displayName, use scoreCardName instead
  • id
  • scoreModuleId, use scoreCardName instead
  • pd, use probabiliyOfDefault instead
  • scoreDate
  • version

 

Norway
Version 1 Version 3 Comment

{

  "report": {

    "reportMetaData": {},

    "test": true,

    "report": {

      "personData": {},

      "scoreData": {

        "rawScore": 593.0,

        "scoreValue": 32.0,

        "probabilityOfDefault": 0.0383,

        "probabilityOfDefaultAsPercentage": 3.83,

        "minimumScoreValue": 0.0,

        "maximumScoreValue": 100.0,

        "exclusionCodes": {},

        "score": {

          "rawScore": 593.0,

          "score": 32.0,

          "probabilityOfDefault": 0.0383,

          "status": 0

        },

        "version": "v1"

      },

      "assessmentsData": {},

      "paymentData": {},

      "businessAssignmentsData": {},

      "ownershipsData": {}

    }

  }

}

{

  "basicData": {

    "personData": {}

  },

  "creditData": {

    "assessmentsData": {},

    "paymentData": {},

    "businessAssignmentsData": {},

    "ownershipsData": {}

  },

  "scoring": [

    {

      "score": {

        "rawScore": 593.0,

        "scoreValue": 32.0,

        "probabilityOfDefault": 0.0383,

        "probabilityOfDefaultAsPercentage": 3.83

      },

      "scoreCardConfiguration": {

        "scoreCardName": "Generic B2C person",

        "scoreCardGenre": "GENERIC",

        "minimumScoreValue": 0.0,

        "maximumScoreValue": 100.0

      },

      "exclusionCodes": {}

    }

  ]

}

Unwrapped v1 report.report into modularized data segments, basicData, creditData and scoring.

report.report.scoreData can be found in scoring.

Finland
Version 1 Version 3 Comment

{

  "scoreData": {

    "scoringResponseList": [

      {

        "scoreValue": 37.0,

        "version": "0"

      }

    ]

  },

  "report": {

    "data": {

      "personData": {},

      "paymentData": {},

      "businessAssignmentData": {},

      "signingRightData": {},

      "bricData": {}

    },

    "subjectData": {},

    "test": true,

    "dataSources": []

  },

  "creditsOverviewData": {

    "subjectData": {},

    "clientData": {},

    "decisionOutcome": "D",

    "data": {

      "coreClubData": {},

      "highRiskVariable": {}

    },

    "date": "2022-10-27 15:14 UTC"

  }

}

{

  "scoring": [

    {

      "score": {

        "scoreValue": 37.0

      }

    }

  ],

  "basicData": {

    "dataSources": [],

    "personData": {}

  },

  "creditData": {

    "paymentData": {},

    "businessAssignmentData": {},

    "signingRightData": {},

    "bricData": {}

  },

  "creditsOverviewData": {

      "coreClubData": {},

      "highRiskVariable": {}

  }

}

Unwrapped v1 report.data into modularized data segments, basicData and creditData.

report.dataSources in v1 is moved into basicData in v3.

scoreData.scoringResponseList in v1 is transformed into scoring in v3.

Only creditsOverviewData.data in v1 is kept in v3.

Denmark
Version 1 Version 3 Comment

{

  "report": {

    "data": {

      "personData": {},

      "creditWarning": {},

      "paymentData": {}

    },

    "subjectData": {},

    "test": true

  }

}

{

  "creditData": {

      "paymentData": {}

  },

  "basicData": {

    "personData": {},

    "creditWarning": {}

  }

}

Unwrapped v1 report.data into modularized data segments, basicData and creditData.

Common segments for all countries

Customer Input
Version 1 Version 3  

{

  "customerInput": {

    "subjectData": {},

    "clientData": {},

    "language": "en",

    "decisionOutcome": "A",

    "data": [

      {

        "name": "creditApplied",

        "value": "50000"

      }

    ],

    "date": "2022-10-27 13:34 UTC"

  }

}

{

  "customerInput": [

    {

      "name": "creditApplied",

      "value": "50000"

    }

  ]

}

Only customerInput.data in v1 is kept in v3.

Compliance
Version 1 Version 3

{

  "aml": {}

}

{

  "complianceData": {}

}

Bank Statement
Version 1 Version 3

{

    "bankData": {

        "subjectData": {},

        "clientData": {},

        "decisionOutcome": "A",

        "data": {

            "type": 0,

            "data":""

        },

        "date": "2021-10-27 16:58 UTC"

    }

}

{

    "bankData": {

        "type": 0,

        "data":""

    }

}

Fetching Appendix (Sweden only)

Appendix Request

GET endpoint

This endpoint is only for main applicant.

Method URL for old version 1 URL for new version 3
GET https://api.bisnode.com/decision/v1/person/{correlationId}/pdf https://api.bisnode.com/decision/v3/person/{correlationId}/appendix/pdf

POST endpoint

This endpoint can be used for any applicant by specifying the person identification number in the request body.

Method URL for old version 1 URL for new version 3
POST https://api.bisnode.com/decision/v1/person/{correlationId}/pdf https://api.bisnode.com/decision/v3/person/{correlationId}/appendix/pdf
Request body
Version 1 Version 3
nationalId nationalIdentificationNumber

Appendix Response

The appendix response is the same for v1 and v3, both are in PDF format.