Skip to main content

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

FieldDescription
MsgIdMessage Identifier - unique for each request
CreDtTmCreated Date Time - timestamp of the request
ReqdMsgNmIdRequested Message Name - requested response type
BBANBasic Bank Account Number
AVLBAvailable 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

  • MsgId must 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)