Guide to creating profiles

This developer guide takes you through the steps to create a profile in PassFort API 4.0.

What are profiles?

Profiles correspond to the applicants and customers who are applying for your products.

There are two profile types:

  • Individual profiles: Used for prospects and customers who are people.
  • Company profiles: Used for prospects and customers who are companies.
The profile’s type affects what can be data stored in it, which tasks it can have, and which checks can be run on it. But all profiles, regardless of type, go through the same product application processes for onboarding and monitoring.

There are three main parts to a profile when it’s first created:

  • role: This required field indicates whether the profile type is an individual or company.
If you're creating a company associate, the role field indicates it's a company associate.
  • collected_data: This required object contains most of the information about the individual or company. For example, for individual profiles, it can contain the individual’s name, address history, and more. On company profiles, it can contain the company’s name, company number, country of incorporation, and more.
  • applications: This optional array of objects is used to assign product applications to the profile. Each product application corresponds to one object in the array.

Create a profile

Sending the request

Make a request to the endpoint below.

Request endpoint:

POST https://api.passfort.com/4.0/profiles

When you make the request, you need to pass:

  • The role field with the profile’s type. For individual profiles, the value is INDIVIDUAL_CUSTOMER. For company profiles, the value is COMPANY_CUSTOMER.
  • The collected_data object with basic profile information (like the individual’s name).

You may also want to pass one or more product applications in the applications array so the profile applies for those products. If you don’t pass any applications in the array, the profile automatically applies for any products on your account that have the auto_apply attribute.

A list of all the required and optional fields you can pass are listed in the Create a profile developer resources.

If you’re passing a product application in the request, use the product’s alias, rather than the product ID, where possible to identify the product for the application.
To use the portal to see if a product has the auto_apply attribute, go to Policy Builder > Your products and select the product. If the New profiles will automatically apply for this product checkbox is selected, the product has the auto_apply attribute.

Reading the response

When the profile is created, there are some important parts that are added to the profile automatically, which you can see in the response:

  • tasks: This object contains a list of due diligence tasks which need to be completed for the profile’s product application(s) to be approved.
  • checks: This object contains a history of any checks that have been run on the profile to assist in completing tasks.

The smart policy for each product application determines which tasks are added to the profile and which checks are run automatically.

However, when you first create a profile, tasks and checks will likely be blank. This can happen for a number of reasons. For example, the application’s risk level may still be calculating or the smart policy may require more profile data to continue.

If the profile has any product applications, the application’s current state is displayed in the applications.flag field.

To get a notification when a check is completed, listen to the Check completed webhook.
After you’ve created a profile, you can synchronise the profile data with your system data.

Example: Individual profile

In this example, an individual profile is created for someone named Alex D Wheeler. The profile applies to a product with the alias forexo_basic.

If you’re copying this sample request for your own testing, remember to replace forexo_basic with your product alias or remove the applications object.

Sample request body:

{
"applications": [
{
"product": {"alias": "forexo_basic"}
}
],
"role": "INDIVIDUAL_CUSTOMER",
"collected_data": {
"entity_type": "INDIVIDUAL",
"personal_details": {
"name": {
"given_names": [
"Alex",
"D"
],
"family_name": "Wheeler"
}
}
}
}

We can see in the response that:

  • One task has been added to the tasks object. The task has the INDIVIDUAL_VERIFY_IDENTITY type.
  • No checks have been run. We can see this because the checks object is blank.

Sample response:

{
"applications": [
{
"approval_blockers": [ … ],
"assignments": [ ],
"flag": "AUTOMATING",
"flag_history": [ … ],
"hidden": false,
"history": [ … ],
"id": "edc23993-eb6a-9d89-bb79-5b8925b33224",
"product": {
"alias": "forexo_basic",
"automatically_approve": false,
"id": "b0ce7c17-2cab-86e7-9a83-ebee0d4d5dc8",
"name": "Forexo Basic Account"
},
"required_tasks": [ … ],
"status": "APPLIED"
}
],
"category": "APPLICANT",
"checks": [ ],
"collected_data": {
"entity_type": "INDIVIDUAL",
"personal_details": { … }
},
"collection_steps": [ ],
"display_name": "Alex D Wheeler",
"document_images": [ ],
"events": [ ],
"has_associates": false,
"has_collection_steps": false,
"id": "a2c4393a-e219-67a4-5ab4-2186952e9038",
"linked_to": [ ],
"risk": { },
"role": "INDIVIDUAL_CUSTOMER",
"status": "NORMAL",
"tags": [ ],
"task_progress": {
"completed_count": 0,
"total_count": 1
},
"task_types": [
"INDIVIDUAL_VERIFY_IDENTITY"
],
"tasks": [
{
"check_ids": [ ],
"creation_date": "2019-08-29 11:09:57",
"form_instance_ids": [ ],
"id": "3d7a333c-418d-72a1-007b-06854dbb28eb",
"is_complete": false,
"is_expired": false,
"is_skipped": false,
"state": "INCOMPLETE",
"type": "INDIVIDUAL_VERIFY_IDENTITY",
"variant": {
"id": "ddc72ea7-6e45-cc3b-dc52-30a94b9ec8c2",
"task_type": "INDIVIDUAL_VERIFY_IDENTITY"
}
}
],
"unresolved_event_types": [ ]
}

Example: Company profile

In this example, a company profile is created for PassFort Limited. The profile applies to a product with the alias forexo_pro.

If you’re copying this sample request for your own testing, remember to replace forexo_pro with your product alias or remove the applications object.

Sample request body:

{
"applications": [
{
"product": {"alias": "forexo_pro"}
}
],
"role": "COMPANY_CUSTOMER",
"collected_data": {
"entity_type": "COMPANY",
"metadata": {
"country_of_incorporation": "GBR",
"number": "09565115",
"name": "PassFort Limited"
}
}
}

We can see in the response that:

  • One task has been added to the tasks object. The task has the COMPANY_REVIEW_FILINGS type.
  • No checks have been run. We can see this because the checks object is blank.

Sample response:

{
"applications": [
{
"approval_blockers": [ … ],
"assignments": [ ],
"flag": "AUTOMATING",
"flag_history": [ … ],
"hidden": false,
"history": [ … ],
"id": "379ec33c-5650-1c13-6288-e0369515b949",
"product": {
"alias": "forexo_pro",
"automatically_approve": false,
"id": "db3840b3-4d73-3c78-6b61-5b6262a47425",
"name": "Forexo Pro Account"
},
"required_tasks": [ … ],
"status": "APPLIED"
}
],
"category": "APPLICANT",
"checks": [ ],
"collected_data": {
"entity_type": "COMPANY",
"metadata": { … }
},
"collection_steps": [ ],
"display_name": "PassFort Limited",
"document_images": [ ],
"events": [ ],
"has_associates": false,
"has_collection_steps": false,
"id": "a2e7545b-cb67-7a0e-7108-a444461891a9",
"linked_to": [ ],
"risk": { },
"role": "COMPANY_CUSTOMER",
"status": "NORMAL",
"tags": [ ],
"task_progress": {
"completed_count": 0,
"total_count": 6
},
"task_types": [
"COMPANY_REVIEW_FILINGS"
],
"tasks": [
{
"check_ids": [ ],
"creation_date": "2019-08-29 11:09:57",
"form_instance_ids": [ ],
"id": "72aadb55-8b02-8495-d6b0-e1627ec23612",
"is_complete": false,
"is_expired": false,
"is_skipped": false,
"state": "INCOMPLETE",
"type": "COMPANY_REVIEW_FILINGS",
"variant": {
"id": "5562c4e4-4d12-b16a-a151-7c9eed6816e9",
"task_type": "COMPANY_REVIEW_FILINGS"
}
}
],
"unresolved_event_types": [ ]
}


How did we do?