KYC
frameOS includes built-in KYC (Know Your Customer) verification for individual accounts. KYC collects and verifies identity information to meet regulatory requirements — frameOS handles document collection, identity matching, and compliance checks as part of a hosted onboarding session.
KYC is required to unlock payment capabilities that involve receiving funds. If you request card_receive, bank_account_receive, or creator_shield, KYC is automatically included in the onboarding flow without needing to explicitly request the kyc capability.
Capability requirements
Some capabilities implicitly require KYC. When you request any of the following, KYC verification is automatically included in the account's onboarding session. You can also request kyc directly if you need identity verification independent of these capabilities.
| Capability | Requires KYC | Notes |
|---|---|---|
kyc | — | Standalone identity verification |
card_receive | Required | KYC is automatically included |
bank_account_receive | Required | KYC is automatically included |
creator_shield | Required | KYC is automatically included |
Once KYC passes, any capabilities that depend on it are activated automatically.
Required information
KYC is only available for individual accounts. At minimum, frameOS requires the following information to complete verification:
| Field | Description |
|---|---|
| First name | Legal first name of the individual |
| Last name | Legal last name of the individual |
| Phone number | A valid phone number for the individual |
| Address | Residential address |
| Last 4 of SSN | Last four digits of the individual's Social Security Number |
KYC Prefill pre-populates verified identity data — first name, last name, last 4 of SSN, date of birth, and address — from just a phone number, reducing friction for the account holder and helping prevent fraud.
Create an account with KYC
To enable KYC for an account, create an individual account with the kyc capability and prefill any known identity information. Then create an onboarding session to collect and verify the remaining required fields.
Parameters
Must be individual. KYC is only supported for individual accounts.
Include kyc to request identity verification. You can also include card_receive, bank_account_receive, or creator_shield — KYC will be included automatically for any of these.
The individual's legal first name.
The individual's legal last name.
Object containing number and country_code for the individual's phone.
The individual's email address.
curl --request POST \
--url https://api.framepayments.com/v1/accounts \
--header 'Authorization: Bearer API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"type": "individual",
"capabilities": ["kyc"],
"profile": {
"individual": {
"email": "quavo@framepayments.com",
"name": {
"first_name": "Quavious",
"last_name": "Marshall"
},
"phone": {
"number": "3107484186",
"country_code": "1"
}
}
}
}'
{
"id": "99c6b0da-2570-42a7-838a-5eaa318b07df",
"object": "account",
"type": "individual",
"capabilities": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567892",
"object": "capability",
"name": "kyc",
"status": "pending",
"disabled_reason": null,
"currently_due": [],
"disabled": null
}
],
"profile": {
"individual": {
"email": "quavo@framepayments.com",
"ssn_last_four": null,
"name": {
"first_name": "Quavious",
"middle_name": null,
"last_name": "Marshall",
"suffix": null
},
"phone": {
"number": "3107484186",
"country_code": "1"
},
"birthdate": null,
"address": null
}
},
"terms_of_service": null,
"metadata": {},
"livemode": false,
"created": 1721010605
}
Complete KYC via onboarding
Once the account is created, create an onboarding session to collect and verify the required identity information. frameOS guides the account holder through the remaining fields — address, last 4 of SSN, and any document verification — and activates the kyc capability once verification passes.
curl --request POST \
--url https://api.framepayments.com/v1/onboarding_sessions \
--header 'Authorization: Bearer API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"account_id": "99c6b0da-2570-42a7-838a-5eaa318b07df",
"return_url": "https://example.com/onboarding/complete"
}'
After the account holder completes the session, retrieve the account to confirm the kyc capability status has transitioned to active.