Skip to main content

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:

ItemHow it is provided
Approved KYB Level 1Completed via KYB Level 1 (Web SDK) or KYB Level 1 (API).
CERTIFICATE-OF-INCORPORATION document uploadedUploaded in Step 2 of KYB Level 1 (API).
PROOF-OF-FINANCIAL-CAPACITY document uploaded & approvedUpload as a document, then submit it for verification (see Step 1 below).
PROOF-OF-REVENUE document uploadedUploaded via POST /v2/documents with documentType: PROOF-OF-REVENUE.
At least one UBO with hasControlRegistered in Step 3 of KYB Level 1.
Each UBO has an identification document of type ID, PASSPORT, or DRIVERS-LICENSEFor the USD rail, RESIDENCE-PERMIT is not accepted; use one of the three types above.
Full company address on fileProvided at KYB Level 1 submission; can be updated via the Address API.
Company websiteProvided 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

FieldTypeRequiredDescription
uploadedPoFCIdstringYesID of the PROOF-OF-FINANCIAL-CAPACITY document (must have ready: true).
sandboxRejectbooleanNoSet 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

FieldTypeRequiredDescription
businessTypestringYesOne of: cooperative, corporation, llc, other, partnership, sole_prop, trust.
businessIndustriesarrayYesArray of Bridge industry codes (e.g. ["519290"]). Must contain at least one valid code.
proofOfRevenueDocIdstringYesID of the PROOF-OF-REVENUE document (must have ready: true).
websitestringCond.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.