White-Label Application Form
Unit offers a highly customizable onboarding front-end that allows you to onboard end-customers, individuals, sole-proprietors and businesses.
The White-Label Application Form also includes the implementation of Credit Applications and can be used to onboard end-customers for lending products (like Charge Cards). See Create Application Form with Credit Application for more information.
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 (on our hosted solution).
If you prefer to build your own custom experience, you may still do so using Unit's Applications API.
Overview
The Unit White-Label Application form can be used in one of two ways:
- Via a URL that is generated for the end-customer, hosted and managed by Unit, and may be served from your custom domain (see Customizing the Application Form Domain).
- Embedded in your own website or app by using the a
unit-elements-application-form
UI component. This component is part of the White-Label UI Components and can be customized to match your brand.
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 refresh application form endpoint (unavailable yet, coming up next) . 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).
Migrating from the previous Application Form
The White-Label Application Form is the successor of the Application Form.
For clients that are already utilizing the Application Form, the White-Label Application Form offers a more customizable and feature-rich experience. The Application Form will be deprecated in the future, and we recommend migrating to the White-Label Application Form as soon as possible.
The steps and API for creating a White-Label Application Form are similar to the steps for creating an Application Form, with the addition of the ability to customize the form's appearance and behavior using the Theme API (see White-Labeling and Customization).
Differences and improvements:
- In order to use the new version of the application form, the creation request must include the
X-Accept-Version: V2024_06
header. The route and the request body remain the same for a smoother transition, with some new additions. See Create Application Form. - There's a new way for configuring the theme and the language of the application form. It allows creating themes and languages that are specific for each application, allowing different end-customers to have different experiences. See White-Labeling and Customization.
- The new application form allows creating credit applications for utilizing Unit credit products like Charge Cards, See Create Application Form with Credit Application.
- The new application form can either be hosted by unit in a specific URL, or hosted by clients as an a web component, allowing simpler integration into any website or app without the need for an iframe.
Learn more about which features are coming soon to White-Label Application Form.
White-Labeling and Customization
You may customize the application form experience by utilizing the White-Label Theme API and the White-Label Language API.
For example, a basic theme that overrides colors and sets your company's logo may look like this:
curl -X POST 'https://api.s.unit.sh/white-label/theme'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "whiteLabelTheme",
"attributes": {
"name": "Theme for application form",
"global": {
"logoUrl": "https://ui.dev.unit.sh/resources/outlay-logo.svg",
"colors": {
"primary": "#2E74FF",
"secondary": "#000000"
}
}
}
}
}'
The response object from this request is a JSON:API document that includes the ID of the theme that was created. This ID can be used as one of the attributes in the creation of application form (see Create Application Form).
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 will need to provide 4-7 disclosure URLs, depending on your specific implementation. If you’re not sure which disclosures are relevant to you, reach out to our Compliance team for help. The list of disclosures includes:
- E-Sign Consent (Consent to Electronic Communications and Signatures)
- Privacy Policy
- Deposit terms and conditions
- Client Terms of Service
- Cardholder terms and conditions
- Cash Advance terms and conditions
- Charge Card terms and conditions
The disclosure links may be configured in the Unit Dashboard "Org Settings" -> "General" section.
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 |
curl -X POST 'https://api.s.unit.sh/application-forms'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
-H 'X-Accept-Version: V2024_06'
--data-raw '{
"data": {
"type": "applicationForm",
"attributes": {
"idempotencyKey": "b3b3b3b3-b3b3b3b3-b3b3b3b3-b3b3b3b3",
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
}
},
"relationships": {
"whiteLabelTheme": {
"data": {
"type": "whiteLabelTheme",
"id": "10000"
}
}
}
}
}'
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. |
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. |
allowedApplicationTypes | Array of Individual , SoleProprietorship , SingleMemberBusiness or MultipleMemberBusiness . | Optional. restrict the available application type for this specific application. |
idempotencyKey | string | Required. See Idempotency. |
jwtSubject | string | Optional. See usage with JWT Token for more info |
Relationships
Name | Type | Description |
---|---|---|
whiteLabelTheme | string | Optional. The ID of the white-label theme to be used for this application form. See White-Labeling and Customization above. |
lendingProgram | string | Optional. The ID of the lending program to be used for this application form. See Create Application Form with Credit Application for more information. |
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). |
applicationFormToken | object | See ApplicationFormToken. |
links | object | Related Link object with url to application form |
ApplicationFormToken
Field | Type | Description |
---|---|---|
expiration | Date | ISO timestamp when token will be expired |
token | string | Token value |
ApplicationFormLink Related
Field | Type | Description |
---|---|---|
href | string | URL of application form |
type | string | Link content type "text/html" |
Create Application Form with Credit Application
Using the application form with credit application requires:
- Having an active Lending Program for your org.
- Having a Plaid account and providing your Plaid credentials via the Unit dashboard in "Org Settings" -> "Integrations".
For lending products, you may create an application form that includes a credit application. This is done by specifying the lending program ID in the lendingProgram
relationship as part of the form creation.
curl -X POST 'https://api.s.unit.sh/application-forms'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
-H 'X-Accept-Version: V2024_06'
--data-raw '{
"data": {
"type": "applicationForm",
"attributes": {
"idempotencyKey": "b3b3b3b3-b3b3b3b3-b3b3b3b3-b3b3b3b3",
"tags": {
"userId": "106a75e9-de77-4e25-9561-faffe59d7814"
}
},
"relationships": {
"whiteLabelTheme": {
"data": {
"type": "whiteLabelTheme",
"id": "10000"
}
},
"lendingProgram": {
"data": {
"type": "lendingProgram",
"id": "10001"
}
}
}
}
}'
The result is an application form that collects the necessary information for the credit application, including a new section intended to collect aggregator access tokens from Plaid:
Embedding of application Form
You might choose to embed application form into your app instead of using hosted solution. There are two ways to do this:
The unit-elements-application-form
component is part of the White-Label UI Components, but due to its additional size, it is not included in the main script.
Please use the extended script https://ui.s.unit.sh/release/latest/components-extended.js (Sandbox) https://ui.unit.co/release/latest/components.js (Production) to embed this component.
- Embedding using JWT token
To use this method you should pass JWT subject to the application form creation request. The JWT token should be passed to the application form via the
jwt-token
attribute. The token is used to authenticate the end-user.
<html>
<head>
<script async src="https://ui.s.unit.sh/release/latest/components-extended.js"></script>
<!-- For production environment use `https://ui.unit.co/release/latest/components.js` as the script source.-->
</head>
<body>
<unit-elements-application-form application-form-id="{applicationFormV2Id}" jwt-token="{jwtToken}" theme="{{themeUrl}}" language="{{languageUrl}}"> </unit-elements-application-form>
</body>
</html>
- Embedding using application-form token
<html>
<head>
<script async src="https://ui.s.unit.sh/release/latest/components-extended.js"></script>
<!-- For production environment use `https://ui.unit.co/release/latest/components.js` as the script source.-->
</head>
<body>
<unit-elements-application-form application-form-id="{applicationFormV2Id}" application-form-token="{jwtToken}" theme="{{themeUrl}}" language="{{languageUrl}}"> </unit-elements-application-form>
</body>
</html>
Get by Id
Get an application form resource by id.
Verb | GET |
Url | https://api.s.unit.sh/application-forms/{id} |
Required Scope | applications |
Timeout (Seconds) | 5 |
curl -X GET 'https://api.s.unit.sh/application-forms/10002?include=application' \
-H "Authorization: Bearer ${TOKEN}" \
-H "X-Accept-Version: V2024_06"
Response
Response is a JSON:API document.
200 OK
Field | Type | Description |
---|---|---|
tags | object | See Tags. Tags that will be copied to the application that this form creates (see Tag Inheritance). |
applicationFormToken | object | See ApplicationFormToken. |
links | object | Related Link object with url to application form |
{
"data": {
"type": "applicationFormV2",
"id": "15140",
"attributes": {
"createdAt": "2024-08-07T08:20:21.591Z",
"updatedAt": "2024-08-07T08:20:21.591Z",
"tags": {},
"applicationFormToken": {
"token": "ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnlaWE52ZFhKalpVbGtJam9pTVRVeE5EQWlMQ0owZVhCbElqb2lZWEJ3YkdsallYUnBiMjVHYjNKdElpd2laWGh3SWpveE56SXpNVEExTWpJeExDSmhZM1JwYjI0aU9uc2laR0YwWVVOdmJHeGxZM1JwYjI0aU9udDlmWDAuYkQwUjZiVnFJSHd0UC1PMFY0Ui03Vk1pa3haS05nLUQ5RlowOGcyQ25zcnJ6eXZxNzdKZEZWSUpZMWxaanlzRkJacWh1d3Y3T05TQU9udE52aHExTHhTYWJrYlZRTDVfX3J2aDJiZnN3RjZJejZmZGZCb29rY055UzdwZVNQVWZQWi1qalV6X2FZWEd4Zk1jeDhhWEVlV3JiNzVjUmV0T28xMGJsR3lhcmF6Z3N3UXgzSXdTN0gtR1pKRUdZTkR1SGZqdTNhZHB6RU5aR1BIN0s2MUJuUEszVEVKdmdHRlM4amhLQ0VoUkh4SkNmcENURUtGenhSNW5kZVNYanYtdWR3MFRVcndEcFdvUzI2X290ZkJfdkU5cVQwRTdjX2s0NjBkWEljWTdIN1M3QlBKUldqcDlNcFRGMGx3RDlxRXYzSVhZdFBDQk85TmxLcEVUMk5EdnRB",
"expiration": "2024-08-08T08:20:21.761Z"
},
"applicationFormSettings": {
"brandName": "Pied Piper",
"privacyPolicyUrl": "https://www.pipedpiper.com/gmail/",
"electronicDisclosuresUrl": "https://www.pipedpiper.com/gmail/",
"depositTermsUrl": "https://www.pipedpiper.com/gmail/",
"clientTermsUrl": "https://www.pipedpiper.com/gmail/",
"cardholderTermsUrl": "https://www.pipedpiper.com/gmail/",
"cashAdvancedTermsUrl": "https://www.pipedpiper.com/gmail/",
"contactUsEmail": "contact@pipedpiper.com"
}
},
"links": {
"related": {
"type": "text/html",
"href": "https://application-form.sh/view/ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnlaWE52ZFhKalpVbGtJam9pTVRVeE5EQWlMQ0owZVhCbElqb2lZWEJ3YkdsallYUnBiMjVHYjNKdElpd2laWGh3SWpveE56SXpNVEExTWpJeExDSmhZM1JwYjI0aU9uc2laR0YwWVVOdmJHeGxZM1JwYjI0aU9udDlmWDAuYkQwUjZiVnFJSHd0UC1PMFY0Ui03Vk1pa3haS05nLUQ5RlowOGcyQ25zcnJ6eXZxNzdKZEZWSUpZMWxaanlzRkJacWh1d3Y3T05TQU9udE52aHExTHhTYWJrYlZRTDVfX3J2aDJiZnN3RjZJejZmZGZCb29rY055UzdwZVNQVWZQWi1qalV6X2FZWEd4Zk1jeDhhWEVlV3JiNzVjUmV0T28xMGJsR3lhcmF6Z3N3UXgzSXdTN0gtR1pKRUdZTkR1SGZqdTNhZHB6RU5aR1BIN0s2MUJuUEszVEVKdmdHRlM4amhLQ0VoUkh4SkNmcENURUtGenhSNW5kZVNYanYtdWR3MFRVcndEcFdvUzI2X290ZkJfdkU5cVQwRTdjX2s0NjBkWEljWTdIN1M3QlBKUldqcDlNcFRGMGx3RDlxRXYzSVhZdFBDQk85TmxLcEVUMk5EdnRB"
}
}
}
}
List
List application form resources. Paging can be applied.
Verb | GET |
Url | https://api.s.unit.sh/application-forms |
Required Scope | applications |
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. |
curl -X GET 'https://api.s.unit.sh/application-forms?page[limit]=20&page[offset]=10' \
-H "Authorization: Bearer ${TOKEN}" \
-H "X-Accept-Version: V2024_06"
Response
200 OK
Response is a JSON:API document. Represents a list of application forms and not containing tokens or links.
{
"data": [
{
"type": "applicationFormV2",
"id": "10000",
"attributes": {
"createdAt": "2024-06-03T11:35:18.311Z",
"updatedAt": "2024-06-03T11:35:18.311Z",
"tags": {}
}
},
{
"type": "applicationFormV2",
"id": "10001",
"attributes": {
"createdAt": "2024-06-06T13:27:51.737Z",
"updatedAt": "2024-06-06T13:42:08.799Z",
"tags": {}
}
}
],
"meta": {
"pagination": {
"total": 2,
"limit": 100,
"offset": 0
}
}
}
Coming up next
Some features that are coming up next include:
- Selfie verification