Customers API 2025 Winter Release
Customers API is undergoing changes to support upcoming major launches including same name payouts, programmatic onboarding, and local payouts.
The Customers API schema has been updated in preparation for upcoming improvements to onboarding and payment capabilities. This change primarily affects developers who are using Customers API to pass customer information to Bridge. If you’re exclusively using KYC Links API, you are not required to take action.
The new schema provides you the ability to provide additional information and multiple supplemental documents at the time of onboarding to speed up approvals. In addition, the new schema will unblock future capabilities and features such as local FX/rails, same name payouts and automated compliance remediation.
❗Action Required: Update your Customers API integration to use the latest schema by March 5th. Certain required API field names and list of values have changed. Updating your integration to use the new field names and values is necessary to avoid service disruptions. Estimated effort for required changes is 0 to 2 days based on initial feedback.
FAQ
Is this new API schema released under a new version?
No, this new schema will remain under the existing /v0/customers
path and developers can opt-into the new schema dynamically.
Note: This new schema will be enforced on March 5, 2025
How often should I expect breaking changes?
We recognize that breaking changes are disruptive for our developers and we aim to minimize their frequency. We do not anticipate any further Customers API breaking changes in the next six months.
We will continue to release opt-in improvements to the Customers API with the aim of unlocking new product capabilities and streamlining onboarding.
How can I utilize the new API schema?
Developers will be opted into the new API schema when at least one of the newly introduced fields is provided in the API request body. When any new field is detected, the entire request will be validated against the new schema.
Here is a list of new fields for reference:
Shared fields
identifying_information
, documents
, account_purpose
, account_purpose_other
, kyc_screen*
, ofac_screen*
Individual fields
residential_address
, transliterated_residential_address
, completed_customer_safety_check_at
, verified_selfie_at
, nationality
, employment_status
, most_recent_occupation
, acting_as_intermediary
, expected_monthly_payments
Business fields
business_legal_name
, transliterated_business_legal_name
, business_trade_name
, transliterated_business_trade_name
, registered_address
, transliterated_registered_address
, physical_address
, transliterated_physical_address
, business_description
, primary_website
, other_websites
, publicly_traded_listings
, conducts_money_services
, conducts_money_services_using_bridge
, associated_persons
, ownership_threshold
, has_material_intermediary_ownership
, regulated_activity
, operates_in_prohibited_countries
, high_risk_activities
, estimated_annual_revenue_usd
, expected_monthly_payments_usd
, source_of_funds_description
To see the list of required fields, please refer to the API Reference.
How do I integrate with the new identifying_information
attribute?
The identifying_information
attribute will capture both tax identification numbers and other non tax related government issued id information.
For an individual based in Malawi (Mwi
), if you want to pass us their tax identification number, you could reference this page, to see what type is acceptable for that country, and in the identifying_information
array in the request body you would pass the following:
{
"identifying_information": [
{
"type": "tpin",
"issuing_country": "mwi",
"number": "xxxxxxx"
}
]
}
For that same individual, if you want to pass us their passport information as well, as a separate entry to the array in the code snippet above, you would specify it as:
{
"identifying_information": [
{
"type": "tpin",
"issuing_country": "mwi",
"number": "xxxxxxx"
},
{
"type": "passport",
"issuing_country": "mwi",
"number": "xxxxxxxxx",
"image_front": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD...",
}
]
}
Note that for non tax identification documents, a minimum of image_front
is required, and image_back
is optional. These two fields are also welcome for tax identification documents as well.
In the event that you don't see the type
specified for the document you want to provide, please submit other
and provide a description
.
Note: description
is always required when other
is selected as the type.
How do I integrate with the new documents
attribute?
The documents
attribute is meant to serve as a means of passing us whatever documents needed either on the initial API request or in response to RFIs (Request for Information) in response to manual reviews.
To provide Proof of Address for an individual or business, you can add the following documents
to your API request:
{
"documents": [
{
"purposes": ["proof_of_address"],
"file": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD...",
}
]
}
If a document serves multiple purposes, you can add those purposes into the purposes
array while only specifying the file once.
The list of valid document purposes can be found here. In the event that you have a different document purpose that we do not officially support, please include other
and provide a description
.
Note: description
is always required when other
is included as the purposes
array.
Individual (KYC) Changes
residential_address* address
Primary residential address.
transliterated_residential_address address
The individual's residential address transliterated into Latin characters.
Optional. Required if non-Latin residential_address
was provided.
nationality string
Country of nationality.
Format: ISO 3166-1. Example: USA
source_of_funds string
The individual's primary source of funds.
Optional. Required for high risk customers.
Accepted Values:
company_funds
, ecommerce_reseller
, gambling_proceeds
, gifts
, government_benefits
, inheritance
, investments_loans
, pension_retirement
, salary
, sale_of_assets_real_estate
, savings
, someone_elses_funds
Note: removed business_income
and added company_funds
andecommerce_reseller
account_purpose enum
The primary account purpose.
Accepted Values:
charitable_donations
, ecommerce_retail_payments
, investment_purposes
, operating_a_company
, other
, payments_to_friends_or_family_abroad
, personal_or_living_expenses
, protect_wealth
, purchase_goods_and_services
, receive_payment_for_freelancing
, receive_salary
Note: removed business_transactions
and added ecommerce_retail_payments
and investment_purposes
account_purpose_other string
A detailed description of the primary purpose.
Optional. Required if account_purpose
includes other
.
acting_as_intermediary boolean
The individual is acting as intermediary by moving funds on behalf of others.
Optional. Required for high risk customers.
employment_status enum
The employment status of the individual.
Optional. Required for high risk customers.
Accepted values:
employed
, homemaker
, retired
, self_employed
, student
, unemployed
expected_monthly_payments_usd enum
The individual's expected monthly payments.
Optional. Required for high risk customers.
Accepted Values:
0_4999
, 5000_9999
, 10000_49999
, 50000_plus
most_recent_occupation enum
The individual's most recent occupation represented as its Standard Occupational Classification (SOC) code. Reference this page for the full list of SOC codes we support.
Optional. Required for high risk customers.
completed_customer_safety_check_at date
The date when individual successfully passed customer safety check.
verified_selfie_at date
The date when individual's selfie was successfully verified.
identifying_information* identifying_information[]
The official identification details.
documents object
Additional documentation.
Note: This object will now be used to represent documents such as proof_of_address
.
Object values:
purposes* enum[]
The relevant purpose(s) of the specified document. The list of valid document purposes can be found here.
file* enum
Base64 encoded string of the provided document.
description string
Relavent document description.
Required when other
is included in the purposes
.
Business (KYB) Changes
The following fields represent modifications to the API related to the business entity type.
business_legal_name* string
The official registered name of the business as documented with government authorities.
transliterated_business_legal_name string
The business's legal name transliterated into Latin characters.
Optional. Required if non-Latin legal name
business_trade_name* string
The trading name or DBA (Doing Business As) name under which the business operates publicly.
transliterated_business_trade_name string
The business's trade name transliterated into Latin characters.
Optional. Required if non-Latin legal name
registered_address* address
The official registered address of the business.
transliterated_registered_address address
The business's official registered address transliterated into Latin characters.
Optional. Required if non-Latin registered address
physical_address* address
The physical address for the primary place of business.
transliterated_physical_address address
The business's physical address transliterated into Latin characters.
Optional. Required if non-Latin registered address
primary_website string
The business's primary website/web presence.
Required if no nature_of_business` document is included with request
other_websites string[]
The business's other websites and social media handles.
identifying_information* identifying_information[]
The official identification details.
source_of_funds* enum
The business's primary source of funds.
business_loans
, grants
, inter_company_funds
, investment_proceeds
, legal_settlement
, owners_capital
, pension_retirement
, sale_of_assets
, sales_of_goods_and_services
, third_party_funds
, treasury_reserves
Note: removed business_revenue
, equity_funding
and legal_settlement_tax_refund
. Modified business_loans
to now represent both business loans and external financing. `
source_of_funds_description string
A detailed description of the business's primary source of funds.
account_purpose* enum
The business's primary purpose for this account.
Acceptable values:
charitable_donations
, ecommerce_retail_payments
, investment_purposes
, other
, payments_to_friends_or_family_abroad
, payroll
, personal_or_living_expenses
, protect_wealth
, purchase_goods_and_services
, receive_payments_for_goods_and_services
, tax_optimization
, third_party_money_transmission
, treasury_management
,
Note: removed business_transactions
account_purpose_other string
A detailed description of the primary purpose.
Optional. Required if account_purpose
includes other
.
has_material_intermediary_ownership* boolean
The business has at least one intermediate legal entity owner with 25% or more ownership.
estimated_annual_revenue_usd enum
The business's estimated annual revenue in US dollars.
Accepted Values:
0_99999
, 100000_999999
, 1000000_9999999
,10000000_49999999
,50000000_249999999
,250000000_plus
expected_monthly_payments_usd integer
The business's expected monthly payments via this account in US dollars.
operates_in_prohibited_countries boolean
The business has customers or operations in Cuba, Iran, Myanmar, North Korea, and/or Syria.
high_risk_activities enum
The high risk activities that the business participates in.
Accepted values:
none_of_the_above
, adult_entertainment
, gambling
, hold_client_funds
, investment_services
, lending_banking
, marijuana_or_related_services
, money_services
, operate_foreign_exchange_virtual_currencies_brokerage_otc
, safe_deposit_box_rentals
, third_party_payment_processing
, weapons_firearms_and_explosives
, precious_metals_precious_stones_jewelry
(new), nicotine_tobacco_or_related_services
(new)
publicly_traded_listings object[]
The information of the business's primary public traded listing if applicable.
Object values:
market_identifier_code string
The 4-digit Market Identifier Code (MIC) (ISO 10383) for the venue where the business is publicly listed and traded.
stock_number string
The 12-digit International Securities Identification Number (ISIN) of the company without dashes (-).
ticker string
The ticker for the business's publicly traded listing.
regulated_activity object
The information of the business's regulated activity and licensing if applicable.
Object values:
regulated_activities_description string
A detailed description of the regulated activities the business is licensed to conduct.
primary_regulatory_authority_country* string
The country where the primary regulator of the business is located.
primary_regulatory_authority_name* string
The name of the primary regulatory authority that oversees the business's regulated activities.
license_number* string
The license number or registration number assigned by the business's primary regulator.
conducts_money_services boolean
The business offers money services, investment products, and/or other financial services.
conducts_money_services_using_bridge boolean
The business plans to conduct money services, investment products, and/or other financial services using its Bridge account.
Required if conducts_money_services
is true
.
compliance_screening_explanation string
A detailed description of the business's compliance and anti-money laundering controls and practices.
documents object
Additional documentation.
Note: This object will now be used to represent documents such as proof_of_address
.
Object values:
purposes* enum[]
The relevant purpose(s) of the specified document. The list of valid document purposes can be found here.
file* enum
Base64 encoded string of the provided document.
description string
Relavent document description.
Required when other
is included in the purposes
.
ownership_threshold integer
The applicable beneficial ownership threshold for the submitted UBO information.
Valid values are between 5 to 25. Default value is 25.
associated_persons associated_person[]
The list of persons associated with the business (e.g. ultimate beneficial owners, control persons, directors).
Previously named ultimate_beneficial_owners
.
Data Types
Below represents the customer data types mentioned above in more depth.
associated_person object
Represents a person associated with the business (e.g. ultimate beneficial owners, control persons, directors).
Note: associated_person
's share all the same fields as individuals
. Only the additional fields will be listed here.
Object values:
has_control boolean
Is a control person of the company, having significant responsibility to control, manage or influence the activities of the business entity. At least one control person must be specified.
is_director boolean
Is an appointed director or authorized manager of the company.
is_signer boolean
Able to authorize transactions on behalf of the business. At least one signer must be specified.
has_ownership boolean
Represents whether or not the person has ownership of the company.
relationship_established_at date
When the relationship was established between the business and the associated person.
Format: YYYY-MM-DD
title string
The title of this associated person at the company, e.g. CEO, CFO, etc.
Required if has_control
is true.
ownership_percentage integer
The percentage of the company that this associated person owns.
identifying_information object
Official identification details.
Note: This object can represent any official Tax Identification Number such as an SSN for US citizens or Government provided ID document such as a drivers license.
Object values:
issuing_country* string
The country that issued the identity document and/or identification number.
type* enum
Type of identification being provided.
Reference this page for the full list of business tax identification number types grouped by country.
Reference this page for the full list of individual tax identification number types grouped by country.
number string
Identification number.
Required for tax_id and national_id types
expiration date
The date that the identification document expires.
Format: YYYY-MM-DD
image_front string
Base64 encoded string of the front side of the identification document.
Required for Government ID document types.
image_back string
Base64 encoded string of the back side of the identification document.
documents object
Additional documentation.
Note: This object will now be used to represent documents such as proof_of_address
.
Object values:
purposes* enum[]
The relevant purpose(s) of the specified document. The list of valid document purposes can be found here.
file* enum
Base64 encoded string of the provided document.
description string
Relavent document description.
Required when other
is included in the purposes
.
Example Requests
Individuals and UBOs
Current Request Body (Sunset March 5, 2025)
The following JSON is an example payload that you would send to POST /v0/customers
to create an individual customer object.
{
"type": "individual",
"first_name": "John",
"last_name": "Doe",
"email": "email@example.com",
"address": {
"street_line_1": "123 Main St",
"city": "New York City",
"state": "New York",
"postal_code": "10001",
"country": "USA"
},
"birth_date": "2007-01-01",
"tax_identification_number": "xxx-xx-xxxx",
"signed_agreement_id": "d536a227-06d3-4de1-acd3-8b5131730480",
"sof_eu_questionnaire": {
"employment_status": "employed",
"expected_monthly_payments": "5000_9999",
"acting_as_intermediary": "no",
"most_recent_occupation": "291291",
"primary_purpose": "purchase_goods_and_services",
"primary_purpose_other": null,
"source_of_funds": "salary"
},
"proof_of_address_document": "data:image/jpg;base64,..."
}
Updated 2025 Request Body
This is an example of how you would create that same individual customer with the new schema changes.
{
"type": "individual",
"first_name": "Frank",
"middle_name": "Legros",
"last_name": "Rogahn",
"birth_date": "1977-11-17",
"email": "example@example.example",
"residential_address": {
"street_line_1": "123 Main Street",
"street_line_2": "Suite 227",
"city": "San Francisco",
"subdivision": "CA",
"postal_code": "xxxxx",
"country": "USA"
},
"identifying_information": [
{
"type": "ssn",
"issuing_country": "US",
"number": "123456789",
"image_front": "data:image/jpg;base64,..."
},
{
"type": "drivers_license",
"issuing_country": "US",
"number": "J123456789",
"image_front": "data:image/jpg;base64,..."
}
],
"documents": [
{
"purposes": [
"proof_of_address"
],
"file": "data:image/jpg;base64,..."
}
],
"signed_agreement_id": "86b63e37-bf73-4011-bde9-104980ce3b02",
}
Businesses
Current Request Body (Sunset March 5, 2025)
The following JSON is an example payload that you would send to POST /v0/customers
to create a business customer object.
{
"type": "business",
address: {
street_line_1: "123 Main St",
city: "New York City",
state: "New York",
postal_code: "10001",
country: "USA",
},
"business_type": "corporation",
"business_industry": "1153",
"compliance_screening_explanation": "A business",
"description": "A business",
"email": "team@business.co",
"formation_document": "data:image/jpg;base64,...",
"is_dao": false,
"is_high_risk": false,
"name": "My Business",
"ownership_document": "data:image/jpg;base64,...",
"proof_of_address_document": "data:image/jpg;base64,...",
"service_usage_description": "A business",
"signed_agreement_id": "7262662f-6622-46d1-9ac1-0e840d78598f",
"sof_eu_questionnaire": {
"estimated_annual_revenue_usd": "250000000_plus",
"expected_monthly_payments_usd": 101307,
"operates_in_prohibited_countries": "no",
"primary_purpose": "receive_payments_for_goods_and_services",
"primary_purpose_other": null,
"high_risk_activities": [
"none_of_the_above"
],
"source_of_funds": "business_loans",
"source_of_funds_description": "Minima aperiam cum aut.",
"transmits_customer_funds": "yes",
"transmits_customer_funds_description": "Ut similique dolores quo."
},
"statement_of_funds": "data:image/jpg;base64,...",
"tax_identification_number": "xxx-xx-xxxx",
"ultimate_beneficial_owners": [
{
"first_name": "John",
"middle_name": "Doe",
"last_name": "Smith",
"birth_date": "1990-01-01",
"email": "john.doe@gmail.com",
"phone": "1234567890",
"tax_identification_number": "123456789",
"address": {
"street_line_1": "1482 Brock Walk",
"street_line_2": "Suite 927",
"city": "Lake Shirley",
"state": null,
"postal_code": null,
"country": "BVT"
},
"has_ownership": true,
"has_control": true,
"is_signer": true,
"title": "CEO",
"relationship_established_at": "2015-01-01",
"gov_id_image_front": "data:image/jpg;base64,...",
"gov_id_image_back": "data:image/jpg;base64,...",
"proof_of_address_document": "data:image/jpg;base64,..."
}
],
"website": "http://google.com"
}
Updated 2025 Request Body
This is an example of how you would create that same business customer with the new schema changes.
{
"type": "business",
"business_legal_name": "ACME Inc",
"business_trade_name": "Theaters Inc",
"business_description": "Dolorum quasi sed nobis.",
"email": "jasper_mclaughlin@upton.example",
"business_type": "llc",
"registered_address": {
"street_line_1": "56410 Fritsch Square",
"street_line_2": "Apt. 759",
"city": "Okunevaberg",
"subdivision": "MA",
"postal_code": "35744-6371",
"country": "US"
},
"physical_address": {
"street_line_1": "56410 Fritsch Square",
"street_line_2": "Apt. 759",
"city": "Okunevaberg",
"subdivision": "MA",
"postal_code": "35744-6371",
"country": "US"
},
"business_industry": "111110",
"primary_website": "https://example.com/landing",
"is_dao": true,
"source_of_funds": "treasury_reserves",
"account_purpose": "ecommerce_retail_payments",
"associated_persons": [
{
"first_name": "Frank",
"middle_name": "Legros",
"last_name": "Rogahn",
"birth_date": "1977-11-17",
"email": "example@example.example",
"residential_address": {
"street_line_1": "123 Main Street",
"street_line_2": "Suite 227",
"city": "San Francisco",
"subdivision": "CA",
"postal_code": "xxxxx",
"country": "USA"
},
"has_ownership": false,
"has_control": true,
"is_signer": true,
"is_director": true,
"relationship_established_at": "2025-01-28",
"ownership_percentage": 100,
"identifying_information": [
{
"type": "ssn",
"issuing_country": "US",
"number": "123456789",
"image_front": "data:image/jpg;base64,..."
},
{
"type": "drivers_license",
"issuing_country": "US",
"number": "J123456789",
"image_front": ""data:image/jpg;base64,..."
}
],
"documents": []
}
],
"has_material_intermediary_ownership": true,
"identifying_information": [
{
"type": "ein",
"issuing_country": "us",
"number": "123456789"
}
],
"documents": [
{
"purposes": [
"proof_of_address",
"business_formation",
"ownership_information"
],
"file": "data:image/jpg;base64,..."
}
],
"signed_agreement_id": "86b63e37-bf73-4011-bde9-104980ce3b02",
}
Updated 6 days ago