Perform Proof of Address Check
You can run this check immediately via our Demo Postman collection. It's publicly available and doesn't require an account.

Proof of Address check API flow
The first step in creating any check is to create a client from your backend server. For this type of check, a client of type person must be created.
cURL
Node.js
Python
PHP
.NET
curl -X POST https://api.complycube.com/v1/clients \
-H 'Authorization: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"type": "person",
"email": "[email protected]",
"personDetails":{
"firstName": "John",
"lastName" :"Doe"
}
}'
const { ComplyCube } = require("@complycube/api");
const complycube = new ComplyCube({ apiKey: "<YOUR_API_KEY>" });
const client = await complycube.client.create({
type: "person",
email: "[email protected]",
personDetails: {
firstName: "John",
lastName: "Doe"
}
});
from complycube import ComplyCubeClient
cc_api = ComplyCubeClient(api_key='<YOUR_API_KEY>')
new_client = {
'type':'person',
'email':'[email protected]',
'personDetails': {
'firstName':'John',
'lastName':'Doe'
}
}
client = cc_api.clients.create(**new_client)
use ComplyCube\ComplyCubeClient;
$ccapi = new ComplyCubeClient('<YOUR_API_KEY>');
$result = $ccapi->clients()->create(['type' => 'person',
'email' => '[email protected]',
'personDetails' => ['firstName' => 'John',
'lastName' => 'Doe']]);
using ComplyCube.Net;
using ComplyCube.Net.Resources.Clients;
var clientApi = new ClientApi(new ComplyCubeClient("<YOUR_API_KEY>"));
var newClient = new ClientRequest {
type = "person",
email = "[email protected]",
personDetails = new PersonDetails {
firstName = "John",
lastName = "Doe"
}
}
var client = await clientApi.CreateAsync(newClient);
The response will contain an
id
(the Client ID). It is required for the next step.{
"id": "5eb04fcd0f3e360008035eb1",
"type": "person",
"email": "[email protected]",
"personDetails": {
"firstName": "John",
"lastName": "Doe"
},
"createdAt": "2021-01-04T17:24:29.146Z",
"updatedAt": "2021-01-04T17:24:29.146Z"
}
Create an address by providing the Client ID and address details.
cURL
Node.js
Python
PHP
.NET
curl -X POST https://api.complycube.com/v1/addresses \
-H 'Authorization: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"clientId":"5eb04fcd0f3e360008035eb1",
"line": "Flat 323",
"city": "Aldgate",
"state": "London",
"country": "GB"
}'
const address = await complycube.address.create("5eb04fcd0f3e360008035eb1", {
line: "Flat 323",
city: "Aldgate",
state: "London",
country: "GB"
});
new_address = {
'line': 'Flat 323',
'city': 'Aldgate',
'state': 'London',
'country': 'GB'
}
address = cc_api.addresses.create('5eb04fcd0f3e360008035eb1',**new_address)
$address = $ccapi->address()->create('5eb04fcd0f3e360008035eb1',
['line'=>'Flat 323',
'city'=>'ManhAldgateattan',
'state'=>'London',
'country'=>'GB']);
var addressRequest = new AddressRequest
{
clientId = "5eb04fcd0f3e360008035eb1",
line = "Flat 323",
city = "Aldgate",
state = "London",
country = "GB"
};
var address = await addressApi.CreateAsync(addressRequest);
The response will contain an
id
(the Address ID). It is required for the next step.{
"id": "5ebd40714f23960008c81528",
"clientId":"5eb04fcd0f3e360008035eb1",
"line": "Flat 323",
"city": "Aldgate",
"state": "London",
"country": "GB",
"createdAt": "2021-01-04T17:25:21.116Z",
"updatedAt": "2021-01-04T17:25:21.116Z"
}
Create a document by providing the Client ID and document type (e.g. bank statement, utility bill).
cURL
Node.js
Python
PHP
.NET
curl -X POST https://api.complycube.com/v1/documents \
-H 'Authorization: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
clientId":"5eb04fcd0f3e360008035eb1",
"type": "bank_statement"
}'
const document = await complycube.document.create("5eb04fcd0f3e360008035eb1", {
type: "bank_statement"
});
document = cc_api.documents.create(
'5eb04fcd0f3e360008035eb1',
type='bank_statement')
$doc = $ccapi->documents()->create('5eb04fcd0f3e360008035eb1',
['type'=>'bank_statement']);
var docRequest = new DocumentRequest
{
clientId = "5eb04fcd0f3e360008035eb1",
type = "bank_statement"
};
var document = await docApi.CreateAsync(docRequest);
The response will contain an
id
(the Document ID). It is required for the next step.{
"id": "5ebd40714f23960008c81527",
"type": "bank_statement",
"createdAt": "2021-01-04T17:25:21.116Z",
"updatedAt": "2021-01-04T17:25:21.116Z"
}
Upload a BASE64 encoded image of the proof of address document.
Images should be JPG, PNG, or PDF.
Below is a sample BASE64encoded file. Download it, and copy its content. Then paste into the
data
attribute when making the request.base64-encoded-bank-statement-sample.txt
203KB
Text
Sample - BASE64 encoded bank statement
cURL
Node.js
Python
PHP
.NET
curl -X POST https://api.complycube.com/v1/documents/5ebd40714f23960008c81527/upload/front \
-H 'Authorization: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"fileName": "bank-statement-sample.pdf",
"data": "<BASE64_DATA_CONTENT>"
}'
const frontImage = await complycube.document.upload("5ebd40714f23960008c81527", {
fileName: "bank-statement-sample.pdf",
data: "<BASE64_DATA_CONTENT>"
}, "front");
front_image = cc_api.documents.upload(
'5ebd40714f23960008c81527',
'front',
fileName='bank-statement-sample.pdf',
data='<BASE64_DATA_CONTENT>')
$up = $ccapi->documents()->upload('5ebd40714f23960008c81527',
'front',
['fileName' => 'bank-statement-sample.pdf',
'data' => '<BASE64_DATA_CONTENT>']);
var docFront = new ImageRequest
{
fileName = "bank-statement-sample.pdf",
data= "<BASE64_DATA_CONTENT>"
};
var img = await docApi.UploadImageAsync("5ebd40714f23960008c81527",
"front",
docFront);
The response will contain an
id
(the Check ID). It is required for the next step.{
"id": "5eb169302d868c0008828591",
"fileName": "bank-statement-sample.pdf",
"documentSide": "front",
"downloadLink": "/documents/5ebd40714f23960008c81527/images/5eb169302d868c0008828591/download",
"contentType": "application/pdf",
"size": 182716,
"createdAt": "2021-01-04T17:25:21.116Z",
"updatedAt": "2021-01-04T17:25:21.116Z"
}
Create a check by providing the Client ID, Document ID and check type.
cURL
Node.js
Python
PHP
.NET
curl -X POST https://api.complycube.com/v1/checks \
-H 'Authorization: <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
-d '{
"clientId":"5eb04fcd0f3e360008035eb1",
"documentId":"5ebd40714f23960008c81527",
"type": "proof_of_address_check"
}'
const check = await complycube.check.create("5eb1276d96be4a0008713af5", {
documentId: "5ebd40714f23960008c81527",
type: "proof_of_address_check"
});
check = cc_api.checks.create( '5eb1276d96be4a0008713af5',
'proof_of_address_check',
documentId='5ebd40714f23960008c81527' )
$result = $ccapi->checks()->create('5eb1276d96be4a0008713af5',
['type' => 'proof_of_address_check',
'documentId' => '5ebd40714f23960008c81527']);
var checkRequest = new CheckRequest
{
clientId = "5eb04fcd0f3e360008035eb1",
documentId = "5ebd40714f23960008c81527",
type = "proof_of_address_check"
};
var check = await checkApi.CreateAsync(checkRequest);
The response will contain an
id
(the Check ID). It is required for the next step.{
"id": "5ebd40714f23960008c81527",
"entityName": "John Doe",
"type": "proof_of_address_check",
"clientId": "5eb04fcd0f3e360008035eb1",
"documentId": "5ebd40714f23960008c81527",
"status": "pending",
"createdAt": "2021-01-04T17:25:21.116Z",
"updatedAt": "2021-01-04T17:25:21.116Z"
}
ComplyCube will perform the check. You can retrieve a check's outcome and breakdown via the API.
cURL
Node.js
Python
PHP
.NET
curl -X GET https://api.complycube.com/v1/checks/5ebd40714f23960008c81527 \
-H 'Authorization: <YOUR_API_KEY>'
const check = await complycube.check.get("5ebd40714f23960008c81527");
check = cc_api.checks.get('5ebd40714f23960008c81527')
$check = $ccapi->checks()->get('5ebd40714f23960008c81527');
var check = await checkApi.GetAsync("5ebd40714f23960008c81527");
{
"id": "5ebd40714f23960008c81527",
"entityName": "John Doe",
"type": "document_check",
"clientId": "5eb04fcd0f3e360008035eb1",
"documentId": "5ebd40714f23960008c81527",
"status": "complete",
"result": {
"outcome": "clear",
"breakdown": {
"extractedData": {
"holderDetails": {
"entityName": "John Doe"
},
"documentDetails": {
"documentType": "bank_statement",
"issuer": "Barclays Bank",
"issuingDate": {
"day": 25,
"month": 1,
"year": 2021
}
},
"addressDetails": {
"address": {
"propertyNumber": "323",
"line": "Common street",
"city": "Aldgate",
"state": "London",
"postalCode": "W99 0RD",
"country": "GB",
"latLong": "51.5136,-0.077188"
},
"addressLine": "323 Common Street Aldgate London W99 0RD",
"addressCountry": "GB"
}
},
"clientValidation": {
"firstName": "clear",
"lastName": "clear",
"address": "clear"
},
"contentAnalysis": {
"documentAge": "clear"
},
"geoLocationAnalysis": {
"ipInAddressCountry": "clear",
"ipProximityToAddress": "clear"
}
}
},
"createdAt": "2020-01-04T17:25:21.116Z",
"updatedAt": "2020-01-04T17:25:21.116Z"
}
Last modified 1yr ago