Know-Your-Business (KYB)
Overview
The Know-Your-Business API allows you to programmatically verify the information of businesses onboarding to your platform and ensure regulatory compliance. This verification is required before businesses can begin using BitGo products through your platform.
The KYB API works by associating individual identities of key business personnel with the business' identity. After you create and associate all the necessary identities and request BitGo product access, BitGo generates documentation requirements specifically tailored to the business and regulatory requirements. The API supports piecemeal updates, so you can collect and update documentation over time.
KYB Webhooks
You can set up webhooks to keep you informed throughout the KYB process. See the Create Organization Webhook endpoint for more information.
Prerequisites
- Get Started
- Set Up Organization
- Organization Admin privileges
1. Create Enterprise and Primary User
Endpoint: Create an Enterprise for an Organization
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
export ORGANIZATION_ID="<YOUR_ORGANIZATION_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export EMAIL="<YOUR_USER'S_EMAIL>" export IDEMPOTENCY_KEY="<UNIQUE_IDENTIFIER_PER_REQUEST>" curl -X POST \ "https://app.bitgo-test.com/api/v2/organization/$ORGANIZATION_ID/enterprise" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "email": "$EMAIL", "idempotencyKey": "$IDEMPOTENCY_KEY", "additionalAdmins": [ "5cb525d7e1b1328103076788fd6a07f9" ], "accountType": "entity" #This creates a business enterprise instead of an individual enterprise. }'
Step Result
All of the following occurs:
- Create a new child enterprise within your parent organization.
- Create a new user for the child enterprise, this is the primary contact for the business.
- Assign the service user to the child enterprise.
- Assign organization admins to the child enterprise.
1 2 3 4
{ "enterpriseId": "68cc1b65564dc0f83892a49d1ee75626", "userId": "68cc1b63564dc0f83892a32072a8b5c7" }
2. Create Users for Associated Persons
Repeat this step to create users for all beneficial owners, control persons, and platform admins associated with the onboarding business.
Endpoint: Add a User to an Enterprise Within an Organization
1 2 3 4 5 6 7 8 9 10 11 12
export ORGANIZATION_ID="<YOUR_ORGANIZATION_ID>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export EMAIL="<YOUR_USER'S_EMAIL>" curl -X POST \ "https://app.bitgo-test.com/api/v2/organization/$ORGANIZATION_ID/enterprise/{enterpriseId}/user" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "email": "$EMAIL" }'
Step Result
You receive a user ID for the user. Store the IDs you create for all associated persons for use in the following steps.
1 2 3
{ "userId": "68cc1bc8b1b5017f12c5c1e3c04cd1d4" }
3. Create Business Identity
Create the main business identity with requested products. The following products are available:
- Custody
- Trade
- Trade API
- Instant Fee Wallets
- Go Account
- Defi
- Cold Self-Custody
- Staking
- Hot-Self Custody
The following code sample requests the products necessary for trading.
Endpoint: Create KYB Identity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export ORGANIZATION_ID="<YOUR_ORGANIZATION_ID>" curl -X POST \ "https://app.bitgo-test.com/api/identity-service/v1/identities" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ { "type": "business", "enterpriseId": "$ENTERPRISE_ID", "organizationId": "$ORGANIZATION_ID", "requestedProducts": [ { "name": "Trade", "bitgoOrg": "BitGo Trust" }, { "name": "Go Account", "bitgoOrg": "BitGo Trust" }, { "name": "Trade API", "bitgoOrg": "BitGo Trust" } ] } }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
{ "type": "business", "organizationId": "659706890515c624f4f0871b879b00a6", "enterpriseId": "68cc1b65564dc0f83892a49d1ee75626", "business": {}, "associatedPeople": [], "id": "c1ecba6b-0914-4bc3-ae67-4188e061aa3e", "requestedProducts": [ { "id": "1a595191-b22d-48f9-b816-4ca311a3f5a4", "name": "Trade", "bitgoOrg": "BitGo Trust", "status": "missingLocation" }, { "id": "81948454-f74e-438e-b51e-75e3fdbac1d3", "name": "Go Account", "bitgoOrg": "BitGo Trust", "status": "missingLocation" }, { "id": "287be386-dd7e-4dc9-9180-8b1e33e2c26d", "name": "Trade API", "bitgoOrg": "BitGo Trust", "status": "missingLocation" } ], "requirements": [], "documents": [], "finalizeSubmission": false }
4. Add Business Location
Add a location to the business. This generates additional business-specific information requirements.
Endpoint: Update KYB Identity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
export BUSINESS_IDENTITY_ID="<YOUR_BUSINESS_IDENTITY_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X PATCH \ "https://app.bitgo-test.com/api/identity-service/v1/identities/$BUSINESS_IDENTITY_ID" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "business": { "physicalBusinessAddress": { "street1": "123 4th St", "city": "San Francisco", "subdivision": "CA", "zip": "85255", "country": "USA" } } }'
Step Result
The response shows the new requirements and their status.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
{ "type": "business", "organizationId": "659706890515c624f4f0871b879b00a6", "enterpriseId": "68cc1b65564dc0f83892a49d1ee75626", "business": { "physicalBusinessAddress": { "street1": "123 4th St", "city": "San Francisco", "subdivision": "CA", "zip": "85255", "country": "USA" } }, "associatedPeople": [], "id": "c1ecba6b-0914-4bc3-ae67-4188e061aa3e", "requestedProducts": [ { "id": "1a595191-b22d-48f9-b816-4ca311a3f5a4", "name": "Trade", "bitgoOrg": "BitGo Trust", "status": "missingEntityStructure" }, { "id": "81948454-f74e-438e-b51e-75e3fdbac1d3", "name": "Go Account", "bitgoOrg": "BitGo Trust", "status": "missingEntityStructure" }, { "id": "287be386-dd7e-4dc9-9180-8b1e33e2c26d", "name": "Trade API", "bitgoOrg": "BitGo Trust", "status": "missingEntityStructure" } ], "requirements": [ { "id": "97aa9da8-bce3-4c75-921f-19b5dc2e1fe9", "kind": "businessInformation", "name": "businessName", "status": "missing" }, { "id": "d4e2f291-dbcb-4645-9cfa-2af82e321528", "kind": "businessInformation", "name": "einTinIdentificationNumber", "status": "missing" }, { "id": "8770df93-740b-4217-9295-fd7f934c0013", "kind": "businessInformation", "name": "legalEntityStructure", "status": "missing" }, { "id": "90e3730c-52b0-4bbc-be22-7d8f85e75847", "kind": "businessInformation", "name": "otherEntityId", "status": "missing" }, { "id": "c4d1e296-2d57-48e9-b7bd-6661f796eeed", "kind": "businessInformation", "name": "tradeStrategy", "status": "missing" }, { "id": "46486076-1b79-4e7a-8140-7029f15c8ea1", "kind": "businessInformation", "name": "activeExchanges", "status": "missing" }, { "id": "fecacda4-fd4a-4e21-9b1a-2d4502992b1d", "kind": "businessInformation", "name": "tradeVolumeUsd", "status": "missing" }, { "id": "cd1e9438-d47a-4291-b293-7afc4b1e03c3", "kind": "businessInformation", "name": "diligenceCounselName", "status": "missing" }, { "id": "5cdf6e6b-7aae-4be0-b921-84cdb2584eb0", "kind": "businessInformation", "name": "walletAddress", "status": "missing" }, { "id": "ba06ba8a-4563-45fb-9230-627d9f398955", "kind": "businessInformation", "name": "incorporationCountryCode", "status": "missing" }, { "id": "27a57e08-aac0-4000-9990-5f48e2fb9c2f", "kind": "businessInformation", "name": "primaryOperationsCountryCode", "status": "missing" }, { "id": "7a819a4c-f764-4b45-b495-4ef252c56adc", "kind": "businessInformation", "name": "formationDate", "status": "missing" }, { "id": "0bdbbb09-2bb1-4a8a-a15f-ae21eb4713d6", "kind": "businessInformation", "name": "companyWebsiteAddress", "status": "missing" }, { "id": "a90b53f8-c222-40be-9791-249119666de8", "kind": "businessInformation", "name": "descriptionBusinessActivities", "status": "missing" }, { "id": "213fb00a-41fc-4052-a5b3-2d47eb6096d9", "kind": "businessInformation", "name": "activeCoinTokens", "status": "missing" }, { "id": "9e9aab26-c2db-4500-8d93-1ea2610a538b", "kind": "businessInformation", "name": "customerBaseLocations", "status": "missing" }, { "id": "3e005cd6-2bca-4163-9758-5f94a933717d", "kind": "businessInformation", "name": "hasAuditor", "status": "missing" }, { "id": "fba8d81f-6fef-4164-89ba-87f6c48f4a90", "kind": "businessInformation", "name": "hasLegalCounsel", "status": "missing" }, { "id": "12ba0148-fb8c-4904-8a64-57ad8340d1e3", "kind": "businessInformation", "name": "authorizedSigner", "status": "missing" }, { "id": "aacb1e67-e535-4695-af55-059d5afed521", "kind": "businessInformation", "name": "dbaName", "status": "missing" }, { "id": "08429fe3-f95e-42ce-bdc1-cc16dbf61c56", "kind": "businessInformation", "name": "primaryBusinessTypeInstitutional", "status": "missing" }, { "id": "046d005b-2fc7-49ef-989c-1637faebfc97", "kind": "businessInformation", "name": "diligenceRetailInstitutional", "status": "missing" }, { "id": "0df8d309-bd5c-470e-870d-8802d5816b31", "kind": "businessInformation", "name": "firmAuditor", "status": "missing" }, { "id": "e4e96c5a-9db1-40b6-8c17-ac1ea8072bf9", "kind": "businessInformation", "name": "sanctionAffiliates", "status": "missing" }, { "id": "8e621c34-a7cf-47ff-a96a-ddbf54ba8836", "kind": "businessInformation", "name": "billingAddress", "status": "missing" }, { "id": "d0b48435-1c8e-44b1-b198-01c9c1b62b3a", "kind": "businessInformation", "name": "billingContact", "status": "missing" }, { "id": "6baa5f12-27c1-4976-8797-5d41f444670c", "kind": "businessInformation", "name": "mailingAddress", "status": "missing" }, { "id": "3e98ca55-d7aa-4634-8006-04253fdf87f4", "kind": "businessInformation", "name": "primaryBusinessType", "status": "missing" }, { "id": "d6f77654-9afa-4a45-95c4-1cd7431bf3c3", "kind": "businessInformation", "name": "physicalBusinessAddress", "status": "submitted" }, { "id": "02dcf645-cb00-4280-a9e1-b79d64511204", "kind": "associatedPerson", "name": "beneficialOwners", "status": "submitted" }, { "id": "a0ab73e7-e06e-4b94-acc7-e75644d80157", "kind": "associatedPerson", "name": "controlPeople", "status": "missing" } ], "documents": [], "finalizeSubmission": false, "ignoredFields": [] }
5. Update Legal Entity Structure
Update the business identity with a legal entity structure. This generates additional document requirements.
Endpoint: Update KYB Identity
1 2 3 4 5 6 7 8 9 10 11 12
export BUSINESS_IDENTITY_ID="<YOUR_BUSINESS_IDENTITY_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X PATCH \ "https://app.bitgo-test.com/api/identity-service/v1/identities/$BUSINESS_IDENTITY_ID" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "business": { "legalEntityStructure": "corporationCAndS", } }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
{ "type": "business", "organizationId": "659706890515c624f4f0871b879b00a6", "enterpriseId": "68cc1b65564dc0f83892a49d1ee75626", "business": { "physicalBusinessAddress": { "street1": "123 4th St", "city": "San Francisco", "subdivision": "CA", "zip": "85255", "country": "USA" }, "businessName": "Acme Corporation", "incorporationCountryCode": "USA", "primaryOperationsCountryCode": "USA", "einTinIdentificationNumber": "12-3456789", "otherEntityId": "ABC123456", "mailingAddress": { "street1": "456 Business Ave", "city": "San Francisco", "subdivision": "CA", "zip": "94102", "country": "USA" }, "billingAddress": { "street1": "789 Finance St", "city": "San Francisco", "subdivision": "CA", "zip": "94103", "country": "USA" }, "legalEntityStructure": "corporationCAndS", "formationDate": "2020-01-15", "dbaName": "Acme", "companyWebsiteAddress": "https://www.acme.com", "primaryBusinessType": "Software or Technology Company", "primaryBusinessTypeInstitutional": true, "descriptionBusinessActivities": "Development Services", "billingContact": { "nameFirst": "Jane", "nameLast": "Smith", "emailAddress": "billing@acme.com", "phoneNumber": { "countryCode": "1", "phoneNumber": "5551234567" } }, "authorizedSigner": { "nameFirst": "John", "nameLast": "Doe", "emailAddress": "john.doe@acme.com", "phoneNumber": { "countryCode": "1", "phoneNumber": "5559876543" } }, "tradeStrategy": "Long-term investment in technology stocks and crypto assets", "activeCoinTokens": "BTC, ETH, USDC, USDT", "tradeVolumeUsd": "1000000", "activeExchanges": "Coinbase, Binance, Kraken", "diligenceRetailInstitutional": "institutional", "customerBaseLocations": "United States, Canada, Europe", "sanctionAffiliates": false, "hasAuditor": true, "firmAuditor": "Deloitte and Touche LLP", "hasLegalCounsel": true, "diligenceCounselName": "Smith and Associates Law Firm", "walletAddress": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6" }, "associatedPeople": [], "id": "c1ecba6b-0914-4bc3-ae67-4188e061aa3e", "requestedProducts": [ { "id": "287be386-dd7e-4dc9-9180-8b1e33e2c26d", "name": "Trade API", "bitgoOrg": "BitGo Trust", "status": "missingRequirements" }, { "id": "1a595191-b22d-48f9-b816-4ca311a3f5a4", "name": "Trade", "bitgoOrg": "BitGo Trust", "status": "missingRequirements" }, { "id": "81948454-f74e-438e-b51e-75e3fdbac1d3", "name": "Go Account", "bitgoOrg": "BitGo Trust", "status": "missingRequirements" } ], "requirements": [ { "id": "d6f77654-9afa-4a45-95c4-1cd7431bf3c3", "kind": "businessInformation", "name": "physicalBusinessAddress", "status": "submitted" }, { "id": "02dcf645-cb00-4280-a9e1-b79d64511204", "kind": "associatedPerson", "name": "beneficialOwners", "status": "submitted" }, { "id": "a0ab73e7-e06e-4b94-acc7-e75644d80157", "kind": "associatedPerson", "name": "controlPeople", "status": "submitted" }, { "id": "e65ddc61-2cbe-4e44-a86f-666760952d3a", "kind": "document", "name": "certificateOfTrust", "status": "missing" }, { "id": "16c518a2-d757-41a3-bac7-040a1011aab7", "kind": "document", "name": "proofOfAuthorizedSignatories", "status": "missing" }, { "id": "e149b8df-c077-4771-8534-c8169d117742", "kind": "document", "name": "w9", "status": "missing" }, { "id": "97aa9da8-bce3-4c75-921f-19b5dc2e1fe9", "kind": "businessInformation", "name": "businessName", "status": "submitted" }, { "id": "ba06ba8a-4563-45fb-9230-627d9f398955", "kind": "businessInformation", "name": "incorporationCountryCode", "status": "submitted" }, { "id": "27a57e08-aac0-4000-9990-5f48e2fb9c2f", "kind": "businessInformation", "name": "primaryOperationsCountryCode", "status": "submitted" }, { "id": "d4e2f291-dbcb-4645-9cfa-2af82e321528", "kind": "businessInformation", "name": "einTinIdentificationNumber", "status": "submitted" }, { "id": "90e3730c-52b0-4bbc-be22-7d8f85e75847", "kind": "businessInformation", "name": "otherEntityId", "status": "submitted" }, { "id": "6baa5f12-27c1-4976-8797-5d41f444670c", "kind": "businessInformation", "name": "mailingAddress", "status": "submitted" }, { "id": "8e621c34-a7cf-47ff-a96a-ddbf54ba8836", "kind": "businessInformation", "name": "billingAddress", "status": "submitted" }, { "id": "8770df93-740b-4217-9295-fd7f934c0013", "kind": "businessInformation", "name": "legalEntityStructure", "status": "submitted" }, { "id": "7a819a4c-f764-4b45-b495-4ef252c56adc", "kind": "businessInformation", "name": "formationDate", "status": "submitted" }, { "id": "aacb1e67-e535-4695-af55-059d5afed521", "kind": "businessInformation", "name": "dbaName", "status": "submitted" }, { "id": "0bdbbb09-2bb1-4a8a-a15f-ae21eb4713d6", "kind": "businessInformation", "name": "companyWebsiteAddress", "status": "submitted" }, { "id": "3e98ca55-d7aa-4634-8006-04253fdf87f4", "kind": "businessInformation", "name": "primaryBusinessType", "status": "submitted" }, { "id": "08429fe3-f95e-42ce-bdc1-cc16dbf61c56", "kind": "businessInformation", "name": "primaryBusinessTypeInstitutional", "status": "submitted" }, { "id": "a90b53f8-c222-40be-9791-249119666de8", "kind": "businessInformation", "name": "descriptionBusinessActivities", "status": "submitted" }, { "id": "d0b48435-1c8e-44b1-b198-01c9c1b62b3a", "kind": "businessInformation", "name": "billingContact", "status": "submitted" }, { "id": "12ba0148-fb8c-4904-8a64-57ad8340d1e3", "kind": "businessInformation", "name": "authorizedSigner", "status": "submitted" }, { "id": "c4d1e296-2d57-48e9-b7bd-6661f796eeed", "kind": "businessInformation", "name": "tradeStrategy", "status": "submitted" }, { "id": "213fb00a-41fc-4052-a5b3-2d47eb6096d9", "kind": "businessInformation", "name": "activeCoinTokens", "status": "submitted" }, { "id": "fecacda4-fd4a-4e21-9b1a-2d4502992b1d", "kind": "businessInformation", "name": "tradeVolumeUsd", "status": "submitted" }, { "id": "46486076-1b79-4e7a-8140-7029f15c8ea1", "kind": "businessInformation", "name": "activeExchanges", "status": "submitted" }, { "id": "046d005b-2fc7-49ef-989c-1637faebfc97", "kind": "businessInformation", "name": "diligenceRetailInstitutional", "status": "submitted" }, { "id": "9e9aab26-c2db-4500-8d93-1ea2610a538b", "kind": "businessInformation", "name": "customerBaseLocations", "status": "submitted" }, { "id": "e4e96c5a-9db1-40b6-8c17-ac1ea8072bf9", "kind": "businessInformation", "name": "sanctionAffiliates", "status": "submitted" }, { "id": "3e005cd6-2bca-4163-9758-5f94a933717d", "kind": "businessInformation", "name": "hasAuditor", "status": "submitted" }, { "id": "0df8d309-bd5c-470e-870d-8802d5816b31", "kind": "businessInformation", "name": "firmAuditor", "status": "submitted" }, { "id": "fba8d81f-6fef-4164-89ba-87f6c48f4a90", "kind": "businessInformation", "name": "hasLegalCounsel", "status": "submitted" }, { "id": "cd1e9438-d47a-4291-b293-7afc4b1e03c3", "kind": "businessInformation", "name": "diligenceCounselName", "status": "submitted" }, { "id": "5cdf6e6b-7aae-4be0-b921-84cdb2584eb0", "kind": "businessInformation", "name": "walletAddress", "status": "submitted" } ], "documents": [], "finalizeSubmission": false, "ignoredFields": [] }
6. Create Individual Identities for Associated Persons
Create individual identities for each beneficial owner and control person using the user IDs created previously. You don't need to request products for associated people. They inherit the product approvals of the business they are associated with.
Endpoint: Create KYB Identity
1 2 3 4 5 6 7 8 9 10 11 12
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export USER_ID="<YOUR_USER_ID>" curl -X POST \ "https://app.bitgo-test.com/api/identity-service/v1/identities" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "type": "individual", "userId": "$USER_ID", "requestedProducts": [] }'
Step Result
1 2 3 4 5 6 7 8 9 10
{ "type": "individual", "userId": "68cc1bc8b1b5017f12c5c1e3c04cd1d4", "individual": {}, "id": "df114ee7-7dc9-431e-aeae-fe4294f789cc", "requestedProducts": [], "requirements": [], "documents": [], "finalizeSubmission": false }
7. Add Associated Persons to Business Identity
When you add associated persons to the business identity, BitGo generates requirements for their individual identities. These requirements are specific to each associated person's identity. Beneficial owners are not required if no one has a 10% stake or more in the company, so the requirement automatically defaults to “submitted”
, but you can always submit more.
Endpoint: Create KYB Identity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
export BUSINESS_IDENTITY_ID="<YOUR_BUSINESS_IDENTITY_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ "https://app.bitgo-test.com/api/identity-service/v1/identities/$BUSINESS_IDENTITY_ID" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "associatedPeople": [ { "role": "beneficialOwner", "identityId": "f56a207c-0c96-4e5d-b59d-5bcf8092580a", "percentageOwnership": 25 }, { "role": "controlPerson", "identityId": "df114ee7-7dc9-431e-aeae-fe4294f789cc" } ] }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
{ "type": "business", "organizationId": "659706890515c624f4f0871b879b00a6", "enterpriseId": "68cc1b65564dc0f83892a49d1ee75626", "business": { "physicalBusinessAddress": { "street1": "123 4th St", "city": "San Francisco", "subdivision": "CA", "zip": "85255", "country": "USA" } }, "associatedPeople": [ { "role": "beneficialOwner", "identityId": "f56a207c-0c96-4e5d-b59d-5bcf8092580a", "percentageOwnership": 25 }, { "role": "controlPerson", "identityId": "df114ee7-7dc9-431e-aeae-fe4294f789cc" } ], "id": "c1ecba6b-0914-4bc3-ae67-4188e061aa3e", "requestedProducts": [ { "id": "1a595191-b22d-48f9-b816-4ca311a3f5a4", "name": "Trade", "bitgoOrg": "BitGo Trust", "status": "missingEntityStructure" }, { "id": "81948454-f74e-438e-b51e-75e3fdbac1d3", "name": "Go Account", "bitgoOrg": "BitGo Trust", "status": "missingEntityStructure" }, { "id": "287be386-dd7e-4dc9-9180-8b1e33e2c26d", "name": "Trade API", "bitgoOrg": "BitGo Trust", "status": "missingEntityStructure" } ], "requirements": [ { "id": "97aa9da8-bce3-4c75-921f-19b5dc2e1fe9", "kind": "businessInformation", "name": "businessName", "status": "missing" }, { "id": "d4e2f291-dbcb-4645-9cfa-2af82e321528", "kind": "businessInformation", "name": "einTinIdentificationNumber", "status": "missing" }, { "id": "8770df93-740b-4217-9295-fd7f934c0013", "kind": "businessInformation", "name": "legalEntityStructure", "status": "missing" }, { "id": "90e3730c-52b0-4bbc-be22-7d8f85e75847", "kind": "businessInformation", "name": "otherEntityId", "status": "missing" }, { "id": "c4d1e296-2d57-48e9-b7bd-6661f796eeed", "kind": "businessInformation", "name": "tradeStrategy", "status": "missing" }, { "id": "46486076-1b79-4e7a-8140-7029f15c8ea1", "kind": "businessInformation", "name": "activeExchanges", "status": "missing" }, { "id": "fecacda4-fd4a-4e21-9b1a-2d4502992b1d", "kind": "businessInformation", "name": "tradeVolumeUsd", "status": "missing" }, { "id": "cd1e9438-d47a-4291-b293-7afc4b1e03c3", "kind": "businessInformation", "name": "diligenceCounselName", "status": "missing" }, { "id": "5cdf6e6b-7aae-4be0-b921-84cdb2584eb0", "kind": "businessInformation", "name": "walletAddress", "status": "missing" }, { "id": "ba06ba8a-4563-45fb-9230-627d9f398955", "kind": "businessInformation", "name": "incorporationCountryCode", "status": "missing" }, { "id": "27a57e08-aac0-4000-9990-5f48e2fb9c2f", "kind": "businessInformation", "name": "primaryOperationsCountryCode", "status": "missing" }, { "id": "7a819a4c-f764-4b45-b495-4ef252c56adc", "kind": "businessInformation", "name": "formationDate", "status": "missing" }, { "id": "0bdbbb09-2bb1-4a8a-a15f-ae21eb4713d6", "kind": "businessInformation", "name": "companyWebsiteAddress", "status": "missing" }, { "id": "a90b53f8-c222-40be-9791-249119666de8", "kind": "businessInformation", "name": "descriptionBusinessActivities", "status": "missing" }, { "id": "213fb00a-41fc-4052-a5b3-2d47eb6096d9", "kind": "businessInformation", "name": "activeCoinTokens", "status": "missing" }, { "id": "9e9aab26-c2db-4500-8d93-1ea2610a538b", "kind": "businessInformation", "name": "customerBaseLocations", "status": "missing" }, { "id": "3e005cd6-2bca-4163-9758-5f94a933717d", "kind": "businessInformation", "name": "hasAuditor", "status": "missing" }, { "id": "fba8d81f-6fef-4164-89ba-87f6c48f4a90", "kind": "businessInformation", "name": "hasLegalCounsel", "status": "missing" }, { "id": "12ba0148-fb8c-4904-8a64-57ad8340d1e3", "kind": "businessInformation", "name": "authorizedSigner", "status": "missing" }, { "id": "aacb1e67-e535-4695-af55-059d5afed521", "kind": "businessInformation", "name": "dbaName", "status": "missing" }, { "id": "08429fe3-f95e-42ce-bdc1-cc16dbf61c56", "kind": "businessInformation", "name": "primaryBusinessTypeInstitutional", "status": "missing" }, { "id": "046d005b-2fc7-49ef-989c-1637faebfc97", "kind": "businessInformation", "name": "diligenceRetailInstitutional", "status": "missing" }, { "id": "0df8d309-bd5c-470e-870d-8802d5816b31", "kind": "businessInformation", "name": "firmAuditor", "status": "missing" }, { "id": "e4e96c5a-9db1-40b6-8c17-ac1ea8072bf9", "kind": "businessInformation", "name": "sanctionAffiliates", "status": "missing" }, { "id": "8e621c34-a7cf-47ff-a96a-ddbf54ba8836", "kind": "businessInformation", "name": "billingAddress", "status": "missing" }, { "id": "d0b48435-1c8e-44b1-b198-01c9c1b62b3a", "kind": "businessInformation", "name": "billingContact", "status": "missing" }, { "id": "6baa5f12-27c1-4976-8797-5d41f444670c", "kind": "businessInformation", "name": "mailingAddress", "status": "missing" }, { "id": "3e98ca55-d7aa-4634-8006-04253fdf87f4", "kind": "businessInformation", "name": "primaryBusinessType", "status": "missing" }, { "id": "d6f77654-9afa-4a45-95c4-1cd7431bf3c3", "kind": "businessInformation", "name": "physicalBusinessAddress", "status": "submitted" }, { "id": "02dcf645-cb00-4280-a9e1-b79d64511204", "kind": "associatedPerson", "name": "beneficialOwners", "status": "submitted" }, { "id": "a0ab73e7-e06e-4b94-acc7-e75644d80157", "kind": "associatedPerson", "name": "controlPeople", "status": "submitted" } ], "documents": [], "finalizeSubmission": false, "ignoredFields": [] }
8. Update Individual Identities with Required Information
Provide the required personal information for each associated person based on the generated requirements.
Endpoint: Create KYB Identity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
export INDIVIDUAL_IDENTITY_ID="<YOUR_INDIVIDUAL_IDENTITY_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ "https://app.bitgo-test.com/api/identity-service/v1/identities/$INDIVIDUAL_IDENTITY_ID" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "individual": { "nameFirst": "John", "nameLast": "Doe", "birthdate": { "month": "1", "day": "1", "year": "2000" }, "identificationNumber": "12345678", "phoneNumber": { "countryCode": "1", "phoneNumber": "5559876543" }, "occupation": "unknown", "countryOfResidence": "USA", "countryOfCitizenship": "USA", "address": { "street1": "123 4th st", "city": "San Francisco", "subdivision": "CA", "zip": "94103", "country": "USA" }, "politicallyExposedPerson": false } }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
{ "type": "individual", "userId": "68cc1bc8b1b5017f12c5c1e3c04cd1d4", "individual": { "nameFirst": "John", "nameLast": "Doe", "birthdate": { "month": "1", "day": "1", "year": "2000" }, "identificationNumber": "12345678", "phoneNumber": { "countryCode": "1", "phoneNumber": "5559876543" }, "occupation": "unknown", "countryOfResidence": "USA", "countryOfCitizenship": "USA", "address": { "street1": "123 4th st", "city": "San Francisco", "subdivision": "CA", "zip": "94103", "country": "USA" }, "politicallyExposedPerson": false } "id": "df114ee7-7dc9-431e-aeae-fe4294f789cc", "requestedProducts": [], "requirements": [ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "kind": "data", "name": "nameFirst", "status": "submitted" }, { "id": "b2c3d4e5-f6g7-8901-bcde-f23456789012", "kind": "data", "name": "nameLast", "status": "submitted" }, { "id": "c3d4e5f6-g7h8-9012-cdef-345678901234", "kind": "data", "name": "birthdate", "status": "submitted" }, { "id": "d4e5f6g7-h8i9-0123-defg-456789012345", "kind": "data", "name": "identificationNumber", "status": "submitted" }, { "id": "e5f6g7h8-i9j0-1234-efgh-567890123456", "kind": "data", "name": "phoneNumber", "status": "submitted" }, { "id": "f6g7h8i9-j0k1-2345-fghi-678901234567", "kind": "data", "name": "occupation", "status": "submitted" }, { "id": "g7h8i9j0-k1l2-3456-ghij-789012345678", "kind": "data", "name": "countryOfResidence", "status": "submitted" }, { "id": "h8i9j0k1-l2m3-4567-hijk-890123456789", "kind": "data", "name": "countryOfCitizenship", "status": "submitted" }, { "id": "i9j0k1l2-m3n4-5678-ijkl-901234567890", "kind": "data", "name": "address", "status": "submitted" }, { "id": "j0k1l2m3-n4o5-6789-jklm-012345678901", "kind": "data", "name": "politicallyExposedPerson", "status": "submitted" } ], "documents": [], "finalizeSubmission": false, }
9. Create Required Documents
Create and upload the required documents for KYB verification. For each required document you must generate an upload URL, upload the document, and then verify it.
9.1 Generate Document Upload URL
Generate a document upload URL. Upload URLs have an expiration date and time specified in the response. Make sure to upload documents before the URL expires.
Endpoint: Create a New Document
1 2 3 4 5 6 7 8 9 10
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ "https://app.bitgo-test.com/api/document-service/v1/documents" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "documentType": "w9" }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
{ "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "w9", "documentTypeLabel": "W9 Form", "subType": null, "status": "awaitingUpload", "files": [ { "fileId": "c6c8651e-dbd3-4f35-ad4d-b3ed1c742a6b", "fileView": "full", "label": "W9 Form Document", "required": true, "uploadUrl": "https://api.withcortex.ai/public/apps/files/uploads/up_6B1Re7PtUzgzSimXdygEx3", "expiresAt": "2025-10-18T16:09:23.973Z" } ] }
9.2 Upload Document
Use the URL from the previous step to upload your document.
1 2 3 4 5
export UPLOAD_URL="<DOCUMENT_UPLOAD_URL>" export FILE_PATH="</path/to/your/document.pdf>" curl -X POST "$UPLOAD_URL" \ -F "file=@$FILE_PATH"
Step Result
1 2 3 4 5 6 7 8 9 10
{ "id": "afile_1jGYRK9FwcQ7mrPETfS3o6", "file_id": "486674b3064254a7e3fa45f4314dbef7-fd377b79ef89f05782976d41f3f5aa9", "file_filename": "w9.pdf", "file_size": 140815, "file_mimetype": "application/pdf", "file_url": "https://files.cortex-content.com/486674b3064254a7e3fa45f4314dbef7-fd377b79ef89f05782976d41f3f5aa9?t=1758212347-xwnpNK2akF4YdbpZxCTvg6iLgZyYh9rF6avGVoDf0OA%3D", "file_status": "PROCESSED", "created_at": "2025-09-18T16:19:07.894Z" }
9.3 Verify Document
After uploading your document, verify the document ID.
Endpoint: Verify Document Upload Status
1 2 3 4 5 6 7 8
export DOCUMENT_ID="<YOUR_DOCUMENT_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ "https://app.bitgo-test.com/api/document-service/v1/documents/$DOCUMENT_ID/verify" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{}'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
{ "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "w9", "documentTypeLabel": "W9 Form", "status": "uploaded", "files": [ { "fileId": "c6c8651e-dbd3-4f35-ad4d-b3ed1c742a6b", "fileView": "full", "required": true, "status": "uploaded", "downloadUrl": "https://files.cortex-content.com/486674b3064254a7e3fa45f4314dbef7-fd377b79ef89f05782976d41f3f5aa9?t=1758212583-ZYhX5s%2BAxtlq6MeFz2uGfkSOesYzMxpsFlAfaIW8a%2Fs%3D" } ] }
10. Associate Documents with Identity
Associate the created documents with the appropriate identity.
Endpoint: Add KYB Documents
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
export IDENTITY_ID="<YOUR_IDENTITY_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ "https://app.bitgo-test.com/api/identity-service/v1/identities/$IDENTITY_ID/documents" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "documents": [ { "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "w9" } ] }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{ "identityId": "c1ecba6b-0914-4bc3-ae67-4188e061aa3e", "acceptedDocuments": [ { "id": "3a83bde3-6db8-49f4-b3aa-7d38ecd1006c", "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "w9", "status": "submitted", "createdAt": "2025-09-18T16:25:52.045Z", "updatedAt": "2025-09-18T16:25:52.045Z" } ], "rejectedDocuments": [] }
11. Finalize Business Identity
Once all of the requirements are submitted, mark the business identity as ready for review by updating it with the finalizeSubmission
parameter. This locks the business identity and all associated person identities and prevents further updates while BitGo reviews them.
Note: Once you finalize an identity, it goes into review and no further updates are allowed. Ensure all information is complete before finalizing.
Endpoint: Update KYB Identity
1 2 3 4 5 6 7 8 9 10 11
export IDENTITY_ID="<YOUR_IDENTITY_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X PATCH \ "https://app.bitgo-test.com/api/identity-service/v1/identities/$IDENTITY_ID" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "finalizeSubmission": true }'
Step Result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
{ { "type": "business", "organizationId": "659706890515c624f4f0871b879b00a6", "enterpriseId": "68cc1b65564dc0f83892a49d1ee75626", "business": { "physicalBusinessAddress": { "street1": "123 4th St", "city": "San Francisco", "subdivision": "CA", "zip": "85255", "country": "USA" }, "businessName": "Acme Trust Corporation", "incorporationCountryCode": "USA", "primaryOperationsCountryCode": "USA", "einTinIdentificationNumber": "12-3456789", "otherEntityId": "ABC123456", "mailingAddress": { "street1": "456 Business Ave", "city": "San Francisco", "subdivision": "CA", "zip": "94102", "country": "USA" }, "billingAddress": { "street1": "789 Finance St", "city": "San Francisco", "subdivision": "CA", "zip": "94103", "country": "USA" }, "legalEntityStructure": "trusts", "formationDate": "2020-01-15", "dbaName": "Acme Trust", "companyWebsiteAddress": "https://www.acmetrust.com", "primaryBusinessType": "Bank", "primaryBusinessTypeInstitutional": true, "descriptionBusinessActivities": "Trust services and asset management", "billingContact": { "nameFirst": "Jane", "nameLast": "Smith", "emailAddress": "billing@acmetrust.com", "phoneNumber": { "countryCode": "1", "phoneNumber": "5551234567" } }, "authorizedSigner": { "nameFirst": "John", "nameLast": "Doe", "emailAddress": "john.doe@acmetrust.com", "phoneNumber": { "countryCode": "1", "phoneNumber": "5559876543" } }, "tradeStrategy": "Long-term investment in technology stocks and crypto assets", "activeCoinTokens": "BTC, ETH, USDC, USDT", "tradeVolumeUsd": "1000000", "activeExchanges": "Coinbase, Binance, Kraken", "diligenceRetailInstitutional": "institutional", "customerBaseLocations": "United States, Canada, Europe", "sanctionAffiliates": false, "hasAuditor": true, "firmAuditor": "Deloitte and Touche LLP", "hasLegalCounsel": true, "diligenceCounselName": "Smith and Associates Law Firm", "walletAddress": "0x742d35Cc6634C0532925a3b8D4C9db96C4b4d8b6" }, "associatedPeople": [ { "role": "beneficialOwner", "identityId": "f56a207c-0c96-4e5d-b59d-5bcf8092580a", "percentageOwnership": 25 }, { "role": "controlPerson", "identityId": "df114ee7-7dc9-431e-aeae-fe4294f789cc" } ], "id": "c1ecba6b-0914-4bc3-ae67-4188e061aa3e", "requestedProducts": [ { "id": "287be386-dd7e-4dc9-9180-8b1e33e2c26d", "name": "Trade API", "bitgoOrg": "BitGo Trust", "status": "missingRequirements" }, { "id": "1a595191-b22d-48f9-b816-4ca311a3f5a4", "name": "Trade", "bitgoOrg": "BitGo Trust", "status": "missingRequirements" }, { "id": "81948454-f74e-438e-b51e-75e3fdbac1d3", "name": "Go Account", "bitgoOrg": "BitGo Trust", "status": "missingRequirements" } ], "requirements": [ { "id": "d6f77654-9afa-4a45-95c4-1cd7431bf3c3", "kind": "businessInformation", "name": "physicalBusinessAddress", "status": "submitted" }, { "id": "02dcf645-cb00-4280-a9e1-b79d64511204", "kind": "associatedPerson", "name": "beneficialOwners", "status": "submitted" }, { "id": "a0ab73e7-e06e-4b94-acc7-e75644d80157", "kind": "associatedPerson", "name": "controlPeople", "status": "submitted" }, { "id": "e65ddc61-2cbe-4e44-a86f-666760952d3a", "kind": "document", "name": "certificateOfTrust", "status": "missing" }, { "id": "16c518a2-d757-41a3-bac7-040a1011aab7", "kind": "document", "name": "proofOfAuthorizedSignatories", "status": "missing" }, { "id": "e149b8df-c077-4771-8534-c8169d117742", "kind": "document", "name": "w9", "status": "missing" }, { "id": "97aa9da8-bce3-4c75-921f-19b5dc2e1fe9", "kind": "businessInformation", "name": "businessName", "status": "submitted" }, { "id": "ba06ba8a-4563-45fb-9230-627d9f398955", "kind": "businessInformation", "name": "incorporationCountryCode", "status": "submitted" }, { "id": "27a57e08-aac0-4000-9990-5f48e2fb9c2f", "kind": "businessInformation", "name": "primaryOperationsCountryCode", "status": "submitted" }, { "id": "d4e2f291-dbcb-4645-9cfa-2af82e321528", "kind": "businessInformation", "name": "einTinIdentificationNumber", "status": "submitted" }, { "id": "90e3730c-52b0-4bbc-be22-7d8f85e75847", "kind": "businessInformation", "name": "otherEntityId", "status": "submitted" }, { "id": "6baa5f12-27c1-4976-8797-5d41f444670c", "kind": "businessInformation", "name": "mailingAddress", "status": "submitted" }, { "id": "8e621c34-a7cf-47ff-a96a-ddbf54ba8836", "kind": "businessInformation", "name": "billingAddress", "status": "submitted" }, { "id": "8770df93-740b-4217-9295-fd7f934c0013", "kind": "businessInformation", "name": "legalEntityStructure", "status": "submitted" }, { "id": "7a819a4c-f764-4b45-b495-4ef252c56adc", "kind": "businessInformation", "name": "formationDate", "status": "submitted" }, { "id": "aacb1e67-e535-4695-af55-059d5afed521", "kind": "businessInformation", "name": "dbaName", "status": "submitted" }, { "id": "0bdbbb09-2bb1-4a8a-a15f-ae21eb4713d6", "kind": "businessInformation", "name": "companyWebsiteAddress", "status": "submitted" }, { "id": "3e98ca55-d7aa-4634-8006-04253fdf87f4", "kind": "businessInformation", "name": "primaryBusinessType", "status": "submitted" }, { "id": "08429fe3-f95e-42ce-bdc1-cc16dbf61c56", "kind": "businessInformation", "name": "primaryBusinessTypeInstitutional", "status": "submitted" }, { "id": "a90b53f8-c222-40be-9791-249119666de8", "kind": "businessInformation", "name": "descriptionBusinessActivities", "status": "submitted" }, { "id": "d0b48435-1c8e-44b1-b198-01c9c1b62b3a", "kind": "businessInformation", "name": "billingContact", "status": "submitted" }, { "id": "12ba0148-fb8c-4904-8a64-57ad8340d1e3", "kind": "businessInformation", "name": "authorizedSigner", "status": "submitted" }, { "id": "c4d1e296-2d57-48e9-b7bd-6661f796eeed", "kind": "businessInformation", "name": "tradeStrategy", "status": "submitted" }, { "id": "213fb00a-41fc-4052-a5b3-2d47eb6096d9", "kind": "businessInformation", "name": "activeCoinTokens", "status": "submitted" }, { "id": "fecacda4-fd4a-4e21-9b1a-2d4502992b1d", "kind": "businessInformation", "name": "tradeVolumeUsd", "status": "submitted" }, { "id": "46486076-1b79-4e7a-8140-7029f15c8ea1", "kind": "businessInformation", "name": "activeExchanges", "status": "submitted" }, { "id": "046d005b-2fc7-49ef-989c-1637faebfc97", "kind": "businessInformation", "name": "diligenceRetailInstitutional", "status": "submitted" }, { "id": "9e9aab26-c2db-4500-8d93-1ea2610a538b", "kind": "businessInformation", "name": "customerBaseLocations", "status": "submitted" }, { "id": "e4e96c5a-9db1-40b6-8c17-ac1ea8072bf9", "kind": "businessInformation", "name": "sanctionAffiliates", "status": "submitted" }, { "id": "3e005cd6-2bca-4163-9758-5f94a933717d", "kind": "businessInformation", "name": "hasAuditor", "status": "submitted" }, { "id": "0df8d309-bd5c-470e-870d-8802d5816b31", "kind": "businessInformation", "name": "firmAuditor", "status": "submitted" }, { "id": "fba8d81f-6fef-4164-89ba-87f6c48f4a90", "kind": "businessInformation", "name": "hasLegalCounsel", "status": "submitted" }, { "id": "cd1e9438-d47a-4291-b293-7afc4b1e03c3", "kind": "businessInformation", "name": "diligenceCounselName", "status": "submitted" }, { "id": "5cdf6e6b-7aae-4be0-b921-84cdb2584eb0", "kind": "businessInformation", "name": "walletAddress", "status": "submitted" } ], "documents": [ { "id": "3a83bde3-6db8-49f4-b3aa-7d38ecd1006c", "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "w9", "status": "submitted", "createdAt": "2025-09-18T16:25:52.045Z", "updatedAt": "2025-09-18T16:25:52.045Z" }, { "id": "3a83bde3-6db8-49f4-b3aa-7d38ecd1006c", "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "proofOfAuthorizedSignatories", "status": "submitted", "createdAt": "2025-09-18T16:25:52.045Z", "updatedAt": "2025-09-18T16:25:52.045Z" }, { "id": "3a83bde3-6db8-49f4-b3aa-7d38ecd1006c", "documentId": "c7c00bb6-0ad3-470d-83f3-a96ce043d812", "documentType": "certificateOfTrust", "status": "submitted", "createdAt": "2025-09-18T16:25:52.045Z", "updatedAt": "2025-09-18T16:25:52.045Z" } ], "finalizeSubmission": false } }
12. Sign Contracts
Before BitGo activates the enterprise, you must sign the required contracts for the business identity. You can sign the contracts at any point in the KYB process.
Contract types:
- Custody -
custody-sa
- Trade -
trade-sa
- Staking -
staking-sa
- Combined (all types) -
master-agreement
You can sign all three agreements by submitting the master-agreement
contract type.
Endpoint: Sign a Contract for an Enterprise Within an Organization
1 2 3 4 5 6 7 8 9 10 11 12
export ORGANIZATION_ID="<YOUR_ORGANIZATION_ID>" export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ "https://app.bitgo-test.com/api/v2/organization/$ORGANIZATION_ID/enterprise/$ENTERPRISE_ID/contract/sign" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "contractType": "master-agreement" "signedDate": "2025-09-09T18:47:23" }'
Approval Process
After finalizing all identities, the KYB process enters review. During this time:
- You can't update any of the finalized identities.
- BitGo reviews all submitted information.
- If additional information is required, BitGo will contact you - not your end user.
BitGo activates licenses for the requested products after all contracts are signed and the identity is approved.
See Also
- API Reference: Create an Enterprise for an Organization
- API Reference: Add a User to an Enterprise Within an Organization
- API Reference: Create KYB Identity
- API Reference: Update KYB Identity
- API Reference: Create a New Document
- API Reference: Verify Document Upload Status
- API Reference: Add KYB Documents