KYB - USD (Fiat)
To operate USD fiat on a company subaccount, submit KYB USD after KYB Level 1 has been approved.
info
KYB Level 1 must be approved before KYB USD can be requested. See KYB Level 1 (Web SDK) or KYB Level 1 (API).
The USD rail also requires that a Proof of Financial Capacity attempt has been approved before KYB USD is submitted. See Proof of Financial Capacity below.
Prerequisites
Before submitting KYB USD, the company subaccount must have:
| Item | How it is provided |
|---|---|
| Approved KYB Level 1 | Completed via KYB Level 1 (Web SDK) or KYB Level 1 (API). |
CERTIFICATE-OF-INCORPORATION document uploaded | Uploaded in Step 2 of KYB Level 1 (API). |
PROOF-OF-FINANCIAL-CAPACITY document uploaded & approved | Upload as a document, then submit it for verification (see Step 1 below). |
PROOF-OF-REVENUE document uploaded | Uploaded via POST /v2/documents with documentType: PROOF-OF-REVENUE. |
At least one UBO with hasControl | Registered in Step 3 of KYB Level 1. |
Each UBO has an identification document of type ID, PASSPORT, or DRIVERS-LICENSE | For the USD rail, RESIDENCE-PERMIT is not accepted; use one of the three types above. |
| Full company address on file | Provided at KYB Level 1 submission; can be updated via the Address API. |
| Company website | Provided at KYB Level 1; if blank, pass website in the KYB USD request body. |
Step 1 - Submit Proof of Financial Capacity (prerequisite)
Upload the PoFC document first via POST /v2/documents with documentType: PROOF-OF-FINANCIAL-CAPACITY. Once the document is ready, submit it for verification.
HTTP POST Request
https://api.sandbox.avenia.io:10952/v2/account/proof-of-financial-capacity/api?subAccountId={subAccountId}
Fields
| Field | Type | Required | Description |
|---|---|---|---|
uploadedPoFCId | string | Yes | ID of the PROOF-OF-FINANCIAL-CAPACITY document (must have ready: true). |
sandboxReject | boolean | No | Set to true to simulate a rejected PoFC in the sandbox environment. |
Sample JSON Body
{
"uploadedPoFCId": "c4e9b27f-1a3d-4e8c-b561-7d2f0a9e4b38"
}
JSON Response
{
"id": "1e6b8c43-5f2a-4d9e-b782-4c1f0a7e3b65"
}
Poll for Completion
GET https://api.sandbox.avenia.io:10952/v2/account/proof-of-financial-capacity/attempts/{attemptId}?subAccountId={subAccountId}
{
"attempt": {
"id": "1e6b8c43-5f2a-4d9e-b782-4c1f0a7e3b65",
"uploadedPoFCId": "c4e9b27f-1a3d-4e8c-b561-7d2f0a9e4b38",
"status": "COMPLETED",
"result": "APPROVED",
"resultMessage": "",
"createdAt": "2026-03-19T22:09:56.631111Z",
"updatedAt": "2026-03-19T22:09:56.865286Z"
}
}
Wait until result is APPROVED.
Step 2 - Submit KYB USD
HTTP POST Request
https://api.sandbox.avenia.io:10952/v2/kyc/usd/api?subAccountId={subAccountId}
Fields
| Field | Type | Required | Description |
|---|---|---|---|
businessType | string | Yes | One of: cooperative, corporation, llc, other, partnership, sole_prop, trust. |
businessIndustries | array | Yes | Array of Bridge industry codes (e.g. ["519290"]). Must contain at least one valid code. |
proofOfRevenueDocId | string | Yes | ID of the PROOF-OF-REVENUE document (must have ready: true). |
website | string | Cond. | Required only if the company website was not captured at KYB Level 1. |
Sample JSON Body
{
"businessType": "llc",
"businessIndustries": ["519290"],
"proofOfRevenueDocId": "5f8d3c16-b2e7-4a9f-c834-1e6b0d5f2a91"
}
JSON Response
{
"attemptId": "7d2f5b18-3e9c-4a7f-d246-6b0e1f8d4c52"
}
cURL Example
curl -X POST "https://api.sandbox.avenia.io:10952/v2/kyc/usd/api?subAccountId=a3f2c891-7b4d-4e6a-9d15-c82e0f3a1b57" \
-H "Authorization: Bearer eyJhdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
-H "Content-Type: application/json" \
-d '{
"businessType": "llc",
"businessIndustries": ["519290"],
"proofOfRevenueDocId": "5f8d3c16-b2e7-4a9f-c834-1e6b0d5f2a91"
}'
Step 3 - Poll the KYB USD Attempt
GET https://api.sandbox.avenia.io:10952/v2/kyc/attempts/{attemptId}?subAccountId={subAccountId}
{
"attempt": {
"id": "7d2f5b18-3e9c-4a7f-d246-6b0e1f8d4c52",
"levelName": "usd-kyb",
"status": "COMPLETED",
"result": "APPROVED",
"resultMessage": "",
"retryable": false,
"createdAt": "2026-03-20T13:21:36.670096Z",
"updatedAt": "2026-03-20T13:21:36.670096Z"
}
}
Once result is APPROVED, USD rail access is active for the subaccount.