Proof of Financial Capacity
Submit Proof of Financial Capacity — a prerequisite to unlock USD (KYB USD) for a COMPANY subaccount.
Prerequisite for USD. Proof of Financial Capacity (PoFC) is required before a
COMPANYsubaccount can be enabled for USD operations. Its KYB must beAPPROVEDfirst.
Overview
Proof of Financial Capacity is a single compliance document that evidences the
company's ability to operate the declared volumes. You upload the document, submit
it, and poll the attempt until it is APPROVED.
What counts as Proof of Financial Capacity? A document that demonstrates the company's funds or income, such as a bank statement, an account balance statement, audited financial statements, or an accountant-issued income statement. Provide a single-sided PDF, typically dated within the last 3 months.
POST /api/kyc/document— register the PDF (documentType: "PROOF-OF-FINANCIAL-CAPACITY") and get a one-time upload URL.POST /api/kyb/proof-of-financial-capacity— submit the uploaded document, get back anattemptId.GET /api/kyb/proof-of-financial-capacity/{attemptId}— poll the attempt (PENDING→APPROVEDorREJECTED).
Flow
- Confirm the
COMPANYsubaccount's KYB isAPPROVED. - Register a
PROOF-OF-FINANCIAL-CAPACITYdocument,PUTthe PDF to the returned URL, and pollGET /api/kyc/document/{documentId}untilready: true. POST /api/kyb/proof-of-financial-capacitywith thedocumentId— Hodle returns anattemptId.- Poll the
attemptIduntilstatus: APPROVED. USD operations unlock once approved.
Uploading the document
Proof of Financial Capacity reuses the document upload
endpoints — only the documentType differs.
Register the document — POST /api/kyc/document
curl --request POST \
--url https://api.hodle.com.br/api/kyc/document \
--header "Authorization: Bearer $API_KEY" \
--header "Content-Type: application/json" \
--data '{ "subAccountId": "c852df87-...", "documentType": "PROOF-OF-FINANCIAL-CAPACITY" }'PUT the PDF to the returned uploadUrlFront, then poll readiness (see Uploading documents).
POST /api/kyb/proof-of-financial-capacity
Request
curl --request POST \
--url https://api.hodle.com.br/api/kyb/proof-of-financial-capacity \
--header "Authorization: Bearer $API_KEY" \
--header "Content-Type: application/json" \
--data '{
"subAccountId": "c852df87-ac61-4259-8242-6451658dfedb",
"uploadedPoFCId": "doc_pofc_9a1..."
}'const res = await fetch(
'https://api.hodle.com.br/api/kyb/proof-of-financial-capacity',
{
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.HODLE_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ subAccountId, uploadedPoFCId }),
},
)
const data = await res.json()import os, requests
res = requests.post(
"https://api.hodle.com.br/api/kyb/proof-of-financial-capacity",
headers={
"Authorization": f"Bearer {os.environ['HODLE_API_KEY']}",
"Content-Type": "application/json",
},
json={"subAccountId": sub_account_id, "uploadedPoFCId": uploaded_pofc_id},
)
data = res.json()Parameters
| Field | Type | Required | Description |
|---|---|---|---|
subAccountId | string | Yes | The COMPANY subaccount's id. |
uploadedPoFCId | string | Yes | documentId of the uploaded Proof of Financial Capacity PDF, with ready: true. |
sandboxReject | boolean | No | Sandbox only. true simulates a rejected attempt; ignored in production. |
Response
{
"success": true,
"data": {
"attemptId": "att_pofc_1e6b...",
"status": "PENDING",
"createdAt": "2026-07-22T22:00:00.000Z"
}
}Errors
{ "success": false, "error": "KYB Level 1 must be approved before submitting Proof of Financial Capacity" }{ "success": false, "error": "Subaccount not found for this platform" }GET /api/kyb/proof-of-financial-capacity/{attemptId}
Poll the attempt until it resolves.
curl --request GET \
--url https://api.hodle.com.br/api/kyb/proof-of-financial-capacity/att_pofc_1e6b... \
--header "Authorization: Bearer $API_KEY"const res = await fetch(
`https://api.hodle.com.br/api/kyb/proof-of-financial-capacity/${attemptId}`,
{ headers: { Authorization: `Bearer ${process.env.HODLE_API_KEY}` } },
)
const data = await res.json()import os, requests
res = requests.get(
f"https://api.hodle.com.br/api/kyb/proof-of-financial-capacity/{attempt_id}",
headers={"Authorization": f"Bearer {os.environ['HODLE_API_KEY']}"},
)
data = res.json()Response
{
"success": true,
"data": {
"attemptId": "att_pofc_1e6b...",
"status": "APPROVED",
"resultMessage": null,
"createdAt": "2026-07-22T22:00:00.000Z",
"updatedAt": "2026-07-22T22:01:43.000Z"
}
}{
"success": true,
"data": {
"attemptId": "att_pofc_1e6b...",
"status": "REJECTED",
"resultMessage": "Statement does not cover the declared capacity",
"createdAt": "2026-07-22T22:00:00.000Z",
"updatedAt": "2026-07-22T22:01:43.000Z"
}
}Status values
| Status | Meaning |
|---|---|
PENDING | Under review. Keep polling. |
APPROVED | Accepted. USD operations unlock for the subaccount. |
REJECTED | Failed. resultMessage describes why; upload a fresh document and resubmit. |