Process 1: Query Cash Balance (No Hold)
Query cash balance without holding funds.
Message Type
camt.060 - Account Reporting Request
camt.052 - Account Report (Response)
Purpose
The Securities Company queries the customer's cash balance at the Custody Bank to determine trading capability, but does not hold funds.
REQUEST - Broker → UFG → Custody Bank
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.060.001.05">
<AcctRptgReq>
<GrpHdr>
<MsgId>BRK00-20250126-001</MsgId>
<CreDtTm>2025-01-26T10:30:00Z</CreDtTm>
</GrpHdr>
<RptgReq>
<ReqdMsgNmId>camt.052</ReqdMsgNmId>
<Acct>
<Id>
<Othr>
<Id>0821234567</Id> <!-- Customer Account Number -->
<SchmeNm>
<Cd>BBAN</Cd>
</SchmeNm>
</Othr>
</Id>
</Acct>
<AcctOwnr>
<Nm>NGUYEN VAN A</Nm>
</AcctOwnr>
<ReqTp>
<Cd>AVLB</Cd> <!-- Available Balance -->
</ReqTp>
</RptgReq>
</AcctRptgReq>
</Document>
Key Fields Explanation
| Field | Description |
|---|---|
MsgId | Message Identifier - unique for each request |
CreDtTm | Created Date Time - timestamp of the request |
ReqdMsgNmId | Requested Message Name - requested response type |
BBAN | Basic Bank Account Number |
AVLB | Available Balance |
RESPONSE - Custody Bank → UFG → Broker
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.052.001.08">
<BkToCstmrAcctRpt>
<GrpHdr>
<MsgId>CUSTODY00-20250126-001</MsgId>
<CreDtTm>2025-01-26T10:30:01Z</CreDtTm>
</GrpHdr>
<Rpt>
<Id>RPT-001</Id>
<Acct>
<Id>
<Othr>
<Id>0821234567</Id>
</Othr>
</Id>
</Acct>
<Bal>
<Tp>
<CdOrPrtry>
<Cd>XPCD</Cd> <!-- Expected Balance - does not show actual balance -->
</CdOrPrtry>
</Tp>
<Amt Ccy="VND">0</Amt> <!-- Always returns 0 -->
<CdtDbtInd>CRDT</CdtDbtInd>
<Dt>
<Dt>2025-01-26</Dt>
</Dt>
<Avlbty>
<Dt>
<ActlDt>2025-01-26</ActlDt>
</Dt>
<Amt Ccy="VND">0</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
</Avlbty>
</Bal>
<!-- Status Information -->
<AddtlRptInf>SUFFICIENT</AddtlRptInf> <!-- Or INSUFFICIENT -->
</Rpt>
</BkToCstmrAcctRpt>
</Document>
Important Note
The response ALWAYS returns <Amt>0</Amt> for security. Actual solvency information is in <AddtlRptInf>:
- SUFFICIENT: Account has sufficient balance
- INSUFFICIENT: Account has insufficient balance
Use Cases
1. Pre-order Check
Before a customer places a buy order, the securities company needs to check the cash balance.
2. Solvency Verification
After order matching, verify that the customer has sufficient solvency.
Flow Diagram
Technical Notes
Idempotency
MsgIdmust be unique for each request- Format:
{MEMBER_ID}-{YYYYMMDD}-{SEQUENCE} - Custody Bank tracks MsgId to avoid duplicate processing
Timeout
- Request timeout: 30 seconds
- If no response received, retry with new MsgId
Error Handling
- If account does not exist: Response with error code
NACT(No Account) - If account is closed: Response with error code
CLOS(Closed)