# Perform Multi-Bureau Check

## Overview <a href="#overview" id="overview"></a>

This guide shows you how to run a Multi Bureau check using the ComplyCube API.

{% hint style="success" %}
You can try this check right away using our [Demo Postman Collection](https://docs.complycube.com/documentation/integration-resources/postman#demo-collection). It’s publicly accessible and **requires no account**.
{% endhint %}

## Integration steps <a href="#create-an-applicant" id="create-an-applicant"></a>

<figure><img src="https://2950143584-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fsw26JqCBnT6AEIbxAYyk%2Fuploads%2F7dH1j96clAXJcUBgDdTm%2Fdocumentation-Multi-Bureau%20Check.png?alt=media&#x26;token=42736e6b-949f-4d67-8ffc-acff600d164a" alt=""><figcaption><p>Multi Bureau Check API Guide</p></figcaption></figure>

{% stepper %}
{% step %}

#### Create a client <a href="#create-an-applicant" id="create-an-applicant"></a>

The first step in creating any check is to add a **client** from your backend server. A client can represent either a **person** or a **company**.&#x20;

For this type of check, a client of type **person** must be created.

The response will contain an `id` (the Client ID). It is required for the next step.

**Example request for creating a client**

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST https://api.complycube.com/v1/clients \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
           "type": "person",
           "email": "john.doe@example.com",
           "personDetails": {
                "firstName": "John",
                "lastName": "Doe",
                "dob": "1990-01-01",
                "ssn": "123-45-6789"
            }
        }'
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const { ComplyCube } = require("@complycube/api");

const complycube = new ComplyCube({ apiKey: "<YOUR_API_KEY>" });

const client = await complycube.client.create({
  type: "person",
  email: "john.doe@example.com",
  personDetails: {
    firstName: "John",
    lastName: "Doe",
    dob: "1990-01-01",
    ssn: "123456789"
  }
});
```

{% endtab %}

{% tab title="Python" %}

```python
from complycube import ComplyCubeClient
cc_api = ComplyCubeClient(api_key='<YOUR_API_KEY>')

new_client = {
    'type':'person',
    'email':'john.doe@example.com',
    'personDetails': {
        'firstName':'John',
        'lastName':'Doe',
        'dob': '1990-01-01',
        'ssn': '123456789'
    }
}

client = cc_api.clients.create(**new_client)
```

{% endtab %}

{% tab title="PHP" %}

```php
use ComplyCube\ComplyCubeClient;

$ccapi = new ComplyCubeClient('<YOUR_API_KEY>');

$result = $ccapi->clients()->create([
    'type' => 'person',
    'email' => 'john.doe@example.com',
    'personDetails' => [
        'firstName' => 'John',
        'lastName' => 'Doe',
        'dob' => '1990-01-01',
        'ssn' => '123456789'
    ]
]);
```

{% endtab %}

{% tab title=".NET" %}

```csharp
using ComplyCube.Net;
using ComplyCube.Net.Resources.Clients;

var clientApi = new ClientApi(new ComplyCubeClient("<YOUR_API_KEY>"));

var newClient = new ClientRequest {
  type = "person",
  email = "john.doe@example.com",
  personDetails = new PersonDetails {
    firstName = "John",
    lastName = "Doe",
    dob = "1990-01-01",
    ssn = "123456789"
  }
}

var client = await clientApi.CreateAsync(newClient);
```

{% endtab %}
{% endtabs %}

**Example response**

The response will contain an `id` (the Client ID). It is required for the next step.

```javascript
{
    "id": "5eb04fcd0f3e360008035eb1",
    "type": "person",
    "email": "john.doe@example.com",
    "personDetails": {
        "firstName": "John",
        "lastName": "Doe",
        "dob": "1990-01-01",
        "ssn": "123-45-6789"
    },
    "createdAt": "2025-01-04T17:24:29.146Z",
    "updatedAt": "2025-01-04T17:24:29.146Z"
}
```

{% endstep %}

{% step %}

#### Create an address

Create an address by providing the **Client ID** and address details.

The response will contain an `id` (the Address ID). It is required later.

**Example request for creating an address**

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST https://api.complycube.com/v1/addresses \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
            "clientId":"5eb04fcd0f3e360008035eb1",
            "line": "47th Test Avenue 323",
            "city": "Manhattan",
            "postalCode": "10001",
            "state": "NY",
            "country": "US"
        }'
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const address = await complycube.address.create("5eb04fcd0f3e360008035eb1", {
  line: "47th Test Avenue 323",
  city: "Manhattan",
  postalCode: "10001",
  state: "NY",
  country: "US"
});
```

{% endtab %}

{% tab title="Python" %}

```python
new_address = {    
    'line': '47th Test Avenue 323',
    'city': 'Manhattan',
    'postalCode': '10001',
    'state': 'NY',
    'country': 'US'
}

address = cc_api.addresses.create('5eb04fcd0f3e360008035eb1',**new_address)
```

{% endtab %}

{% tab title="PHP" %}

```php
$address = $ccapi->address()->create(
    '5eb04fcd0f3e360008035eb1',
    [
        'line' => '47th Test Avenue 323',
        'city' => 'Manhattan',
        'postalCode' => '10001',
        'state' => 'NY',
        'country' => 'US'
    ]
);
```

{% endtab %}

{% tab title=".NET" %}

```csharp
var addressRequest = new AddressRequest {
  clientId = "5eb04fcd0f3e360008035eb1",
  line = "47th Test Avenue 323",
  city = "Manhattan",
  postalCode = "10001",
  state = "NY",
  country = "US"
};

var address = await addressApi.CreateAsync(addressRequest);
```

{% endtab %}
{% endtabs %}

**Example response**

```javascript
{
    "id": "5ebd40714f23960008c81528",
    "clientId":"5eb04fcd0f3e360008035eb1",
    "line": "47th Test Avenue 323",
    "city": "Manhattan",
    "postalCode": "10001",
    "state": "NY",
    "country": "US",
    "createdAt": "2021-01-04T17:25:21.116Z",
    "updatedAt": "2021-01-04T17:25:21.116Z"
}
```

{% endstep %}

{% step %}

#### Create a check

Create a check by providing the **Client ID**, **Address ID**, and **check type**.

The response will contain an `id` (the Check ID). It is required for the next step.

**Example request for creating a check**

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X POST https://api.complycube.com/v1/checks \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
          "clientId":"5eb04fcd0f3e360008035eb1",
          "addressId":"5ebd40714f23960008c81528",
          "type": "multi_bureau_check"
        }'
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const check = await complycube.check.create("5eb04fcd0f3e360008035eb1", {
    addressId: "5ebd40714f23960008c81528",
    type: "multi_bureau_check"
});
```

{% endtab %}

{% tab title="Python" %}

```python
check = cc_api.checks.create(
    '5eb04fcd0f3e360008035eb1',
    'multi_bureau_check',
    addressId='5ebd40714f23960008c81528'
)
```

{% endtab %}

{% tab title="PHP" %}

```php
$result = $ccapi->checks()->create(
    '5eb04fcd0f3e360008035eb1',
    [
        'type' => 'multi_bureau_check',
        'addressId' => '5ebd40714f23960008c81528'
    ]
);
```

{% endtab %}

{% tab title=".NET" %}

```csharp
var checkRequest = new CheckRequest {
  clientId = "5eb04fcd0f3e360008035eb1",
  addressId = "5ebd40714f23960008c81528",
  type = "multi_bureau_check"
};

var check = await checkApi.CreateAsync(checkRequest);
```

{% endtab %}
{% endtabs %}

**Example response**

```javascript
{
    "id": "65c12a6426d2ab000814037e",
    "entityName": "John Doe",
    "type": "multi_bureau_check",
    "clientId": "5eb04fcd0f3e360008035eb1",
    "addressId": "5ebd40714f23960008c81528",
    "status": "pending",
    "createdAt": "2025-01-04T17:25:21.116Z",
    "updatedAt": "2025-01-04T17:25:21.116Z"
}
```

{% endstep %}

{% step %}

#### Retrieve results

ComplyCube will then run the check. You can retrieve its [outcome and detailed breakdown](https://app.gitbook.com/s/kAhgmUKSf8CFUFVL3GEe/check-types/multi-bureau-check#result-object) via the API, or review the results in the Portal.

If you have [set up webhooks](https://docs.complycube.com/documentation/integration-resources/webhooks), you’ll also receive a notification once the check is complete.

**Example request for retrieving the check outcome**

{% tabs %}
{% tab title="cURL" %}

```bash
curl -X GET https://api.complycube.com/v1/checks/5ebd40714f23960008c81527 \
     -H 'Authorization: <YOUR_API_KEY>'
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const check = await complycube.check.get("5ebd40714f23960008c81527");
```

{% endtab %}

{% tab title="Python" %}

```python
check = cc_api.checks.get('5ebd40714f23960008c81527')
```

{% endtab %}

{% tab title="PHP" %}

```php
$check = $ccapi->checks()->get('5ebd40714f23960008c81527');
```

{% endtab %}

{% tab title=".NET" %}

```csharp
var check = await checkApi.GetAsync("5ebd40714f23960008c81527");
```

{% endtab %}
{% endtabs %}

**Example response**

```json
{
   "id": "65c12a6426d2ab000814037e",
   "entityName": "John Doe",
   "type": "multi_bureau_check",
   "clientId": "5eb04fcd0f3e360008035eb1",
   "addressId": "5ebd40714f23960008c81528",
   "status": "complete",
   "result": {
      "outcome": "clear",
      "breakdown": {
         "name": {
            "outcome": "clear",
            "breakdown": [
               {
                  "status": "clear",
                  "source": "commercial_database",
                  "country": "US",
                  "hits": 1
               },
               {
                  "status": "clear",
                  "source": "government_authority",
                  "country": "US",
                  "hits": 1
               }
            ]
         },
         "address": {
            "outcome": "clear",
            "breakdown": [
               {
                  "status": "clear",
                  "source": "government_authority",
                  "country": "US",
                  "hits": 1
               }
            ]
         },
         "dob": {
            "outcome": "clear",
            "breakdown": [
               {
                  "status": "clear",
                  "source": "commercial_database",
                  "country": "US",
                  "hits": 1
               },
               {
                  "status": "clear",
                  "source": "government_authority",
                  "country": "US",
                  "hits": 1
               }
            ]
         },
         "idNumber": {
            "outcome": "clear",
            "breakdown": [
               {
                  "status": "clear",
                  "source": "commercial_database",
                  "country": "US",
                  "hits": 1
               }
            ]
         },
         "additionalChecks": {
            "outcome": "not_processed"
         }
      }
   },
   "createdAt": "2025-01-04T17:25:21.116Z",
   "updatedAt": "2025-01-04T17:25:21.116Z"
}
```

{% endstep %}
{% endstepper %}
