Application Forms
Upcoming deprecation 1/15/25
On February 18th, 2025, the current Application Forms API will be sunset, and replaced by a new version called White-label Application Form. Please use the new White-Label Applications Form instead.
Unit offers a fully customizable onboarding front-end that allows you to onboard end-customers, both individuals and businesses.
Using Unit's white-label experience has many benefits:
- Shorter time to market compared to building your own flow.
- Benefit from Unit's technology, compliance and fraud expertise - Unit's onboarding experience offers responsive, mobile friendly design, and includes phone number verification and on-device fraud detection measures to reduce fraud risk. We monitor and track the application form closely, and it will continue to develop and deliver a frictionless experience that guarantees you are compliant with the evolving regulation.
- No maintenance required: any future changes to the onboarding process will be handled by Unit.
If you prefer to build your own custom experience, you may still do so using Unit's Applications API.
Overview
You may create a new application form by using the Create Application Form endpoint. When you make this call, you can specify:
- Any information you have on the customer that can be used to pre-fill the application form
- Your preferences/restrictions for this specific application (e.g. Individual vs Business application)
When the API call is received, Unit will create an application form resource, and generate an application form link. This link is returned in the response to the API call, along with an application form ID. This link is valid for 24 hours, and you can receive a fresh link that will allow the user to resume the application by calling the GET application form endpoint. It is up to you to manage the distribution of this link and manage all communication around the application form (sending emails, or redirecting the customers).
White-Labeling and Customization
You may customize the application form experience in the "Org Settings" page of the Dashboard, under the "Application form" tab. Some of the values are required (for example, your name and logo), and not providing them will result in an error response when creating the application form.
Unit supports all font types but recommends using *.WOFF for best results
Customizing the Application Form Domain
Unit supports white-labeling of the application form URL. To the end-customer, it will look like the application form is hosted on your sub-domain, while in practice it would be hosted by Unit.
To customize the URL:
- On the Unit Dashboard, go to Org Settings / General and configure the subdomain.
- Click “setup” and provide the URL you would like to use (e.g. apply.yourdomain.com). A new box called "DNS Settings" will show up on the form. The box includes 2 CNAME records that you will have to configure on your DNS provider within 72 hours in order to verify the domain. Examples:
Record Name | Type | Record Value |
---|---|---|
_.apply.yourdomain.com | CNAME | _.acm-validations.aws. |
apply.yourdomain.com | CNAME | application-form.sh |
The first record is used to issue a certificate and to prove the domain ownership. are auto-generated random strings.
The second record will redirect your new subdomain to Unit's application form
After configuring the DNS records, return to the DNS Settings box and click Verify.
If the status has changed from "Unverified" to "Verified", you have completed the subdomain configuration.
If the status has not changed, the verification has not been completed. Note that the verification process may take a couple of minutes and in rare cases even hours, so wait a couple of minutes before retrying the verification.
Disclosures
You would need to provide between 4 and 6 disclosure URLs, depending on your specific implementation. If you are not sure which disclosures are relevant to you, reach out to our compliance team for help. The list of disclosures includes:
- Consent to Electronic Disclosures
- Privacy Policy
- Deposit Terms & Conditions
- Client Terms of Service
- Cardholder Terms and Conditions (optional)
- Cash Advance Terms and Conditions (optional)
Keeping track of the application form status
You may follow the progress of the application by registering to the relevant webhooks (application.denied, application.awaitingDocuments, application.pendingReview, customer.created). You can also check the status by getting the application form resource.
Once an application is created, it will have a relationship with the application form that it was created through (you can match it or search for it using the application form id that you had received in the application-forms api response).
Thanks to tag inheritance, if you had tagged the application form, the same tags will show up on the application resource, and later on, the customer resource, if the application is approved.
Create Application Form
To onboard an end-customer through Unit's UI, create an ApplicationForm
resource
The application form implements the Create Individual Application or Create Business Application calls, depending on the user's choice in the interface.
Verb | POST |
Url | https://api.s.unit.sh/application-forms |
Required Scope | applications-write |
Data Type | applicationForm |
Timeout (Seconds) | 5 |
Attributes
Name | Type | Description |
---|---|---|
tags | object | Optional. See Tags. Tags that will be copied to the application that this form creates (see Tag Inheritance). |
applicantDetails | ApplicationFormPrefill | Optional. Add data that is already known about the end-customer to be auto populated on the form. |
allowedApplicationTypes | Array of Individual , Business or SoleProprietorship . | Optional. restrict the available application type for this specific application. |
lang | String | Optional. Language of application form. Either en or es . If not specified, will default to en . |
settingsOverride | ApplicationFormSettingsOverride | Optional. Override disclosure URLs that were defined in the application form settings. |
requireIdVerification | RequireIdVerification | Optional. Decide whether to require ID verification regardless of evaluation response. |
hideApplicationProgressTracker | Boolean | Optional. Decide whether to show an application form left side bar. |
curl -X POST 'https://api.s.unit.sh/application-forms'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "applicationForm",
"attributes": {
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
},
"allowedApplicationTypes": [
"Individual",
"Business"
],
"lang": "en"
}
}
}'
Response
Response is a JSON:API document.
201 Created
Field | Type | Description |
---|---|---|
tags | object | See Tags. Tags that will be copied to the application that this form creates (see Tag Inheritance). |
url | string | The URL of the application form for the end-customer to access |
stage | string | Current stage of the application form, one of: ChooseBusinessOrIndividual , EnterIndividualInformation , IndividualPhoneVerification , IndividualApplicationCreated , EnterBusinessInformation , EnterBusinessAdditionalInformation , EnterOfficerInformation , BusinessPhoneVerification , EnterBeneficialOwnersInformation , BusinessApplicationCreated , EnterSoleProprietorshipInformation , EnterSoleProprietorshipBusinessInformation , SoleProprietorshipPhoneVerification , SoleProprietorshipApplicationCreated |
applicantDetails | ApplicationFormPrefill | Data that is already known about the end-customer to be auto populated on the form. |
settingsOverride | ApplicationFormSettingsOverride | Disclosure URLs that will override the ones that were defined in the application form settings. |
{
"data": {
"type": "applicationForm",
"id": "95",
"attributes": {
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
},
"url": "https://application-form.sh/6YZ3UG6RS7NGTO5ZB3A4SRO3NEYPJUREYIIKZDOOX2CTWBPZ4A343UB4KZSQRF3DHHKYECF4S45VP7Y2YUP5WGEHO4YVH25Q24JRM4UA5IW3OM552HAFJ3HIVIUJGJBFQ4UJMZ3VGXUG6L5XFKE2W7YX7KDOC2J",
"stage": "ChooseBusinessOrIndividual"
}
}
}
Create an Application Form from an existing Application
You may create an application form for an existing application. To do that, pass an application as a relationship with the relevant application id. This will generate a new application form respectively, that can be used to complete an application that was previously submitted. If the application form already exists for this application id it will return the existing one.
The main use case for this flow is for applications that require document verification. Since there are multiple documents types and many different flows, building a document verification experience requires some engineering investment. Creating an application form from an application that is awaiting documents allows the end-customer to safely upload the documents required, shortens time to market and reduces engineering effort.
curl -X POST 'https://api.s.unit.sh/application-forms'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "applicationForm",
"attributes": {},
"relationships": {
"application": {
"data": {
"type": "application",
"id": "11111"
}
}
}
}
}'
{
"data": {
"type": "applicationForm",
"id": "95",
"attributes": {
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
},
"url": "https://application-form.sh/6YZ3UG6RS7NGTO5ZB3A4SRO3NEYPJUREYIIKZDOOX2CTWBPZ4A343UB4KZSQRF3DHHKYECF4S45VP7Y2YUP5WGEHO4YVH25Q24JRM4UA5IW3OM552HAFJ3HIVIUJGJBFQ4UJMZ3VGXUG6L5XFKE2W7YX7KDOC2J",
"stage": "SoleProprietorshipApplicationCreated"
},
"relationships": {
"application": {
"data": {
"type": "application",
"id": "11111"
}
}
}
}
}
Get by Id
Get an application form resource by id.
You will receive a fresh 24-hour URL for the existing form, allowing the customer to resume the application.
Verb | GET |
Url | https://api.s.unit.sh/application-forms/{id} |
Required Scope | applications |
Timeout (Seconds) | 5 |
Response
Response is a JSON:API document.
200 OK
Field | Type | Description |
---|---|---|
data | ApplicationForm | The application form resource. |
included | IndividualApplication or BusinessApplication | Optional, Application resource. Can be either business or individual, as indicated by the type field. |
curl -X GET 'https://api.s.unit.sh/application-forms/21?include=application' \
-H "Authorization: Bearer ${TOKEN}"
List
List application form resources. Paging can be applied.
Verb | GET |
Url | https://api.s.unit.sh/application-forms |
Required Scope | application-forms |
Timeout (Seconds) | 5 |
Query Parameters
Name | Type | Default | Description |
---|---|---|---|
page[limit] | integer | 100 | Optional. Maximum number of resources that will be returned. Maximum is 1000 resources. See Pagination. |
page[offset] | integer | 0 | Optional. Number of resources to skip. See Pagination. |
filter[tags] | Tags (JSON) | (empty) | Optional. Filter Application forms by Tags. |
sort | string | sort=-createdAt | Optional. sort=createdAt for ascending order or sort=-createdAt (leading minus sign) for descending order. |
curl -X GET 'https://api.s.unit.sh/application-forms?page[limit]=20&page[offset]=10' \
-H "Authorization: Bearer ${TOKEN}"
Response
Response is a JSON:API document.
200 OK
Field | Type | Description |
---|---|---|
data | Array of ApplicationForm | Array of application form resources. |
{
"data": [
{
"type": "applicationForm",
"id": "95",
"attributes": {
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
},
"url": "https://application-form.sh/6YZ3UG6RS7NGTO5ZB3A4SRO3NEYPJUREYIIKZDOOX2CTWBPZ4A343UB4KZSQRF3DHHKYECF4S45VP7Y2YUP5WGEHO4YVH25Q24JRM4UA5IW3OM552HAFJ3HIVIUJGJBFQ4UJMZ3VGXUG6L5XFKE2W7YX7KDOC2J",
"stage": "IndividualApplicationCreated"
},
"relationships": {
"application": {
"data": {
"type": "application",
"id": "10098"
}
}
}
},
{
"type": "applicationForm",
"id": "96",
"attributes": {
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
},
"url": "https://application-form.sh/6YZ3UG6RS7NGTO5ZB3A4SRO3NEYPJUREYIIKZDOOX2CTWBPZ4A343UB4KZSQRF3DHHKYECF4S45VP7Y2YUP5WGEHO4YVH25Q24JRM4UA5IW3OM552HAFJ3HIVIUJGJBFQ4UJMZ3VGXUG6L5XFKE2W7YX7KDOC2J",
"stage": "BusinessApplicationCreated"
},
"relationships": {
"application": {
"data": {
"type": "application",
"id": "10099"
}
}
}
}
]
}