Reference
Certificate of Holding
The same certificate our app gives its users: the gold and silver a user holds with OroPocket at a stated time, issued by OroPocket, held with Augmont, and verifiable with our independent auditor, Vakeelji LLP.
GET
/partner/users/:user_code/certificatebalanceReturns the certificate as a ready-made image (a PNG, 1080 px wide) plus its verify_url. Show the image in your app, let the user share it, or link to it. The QR code on the image opens the same verification page.
Request
curl https://api.oropocket.com/partner/users/usr_xxx/certificate \
-H "Authorization: Bearer oro_live_xxx"Response
{
"success": true,
"request_id": "req_xxx",
"mode": "live",
"data": {
"user_code": "usr_xxx",
"cert_no": "OP-POH-261014-3FA9C21B",
"issued_on": "2026-10-14",
"issued_at": "2026-10-14 19:42:10",
"issued_at_display": "14 October 2026, 19:42 IST",
"holder_name": "Asha Kumari",
"name_verified": true,
"gold_grams": 1.2346,
"silver_grams": 25.5,
"purity": { "gold": "24K · 999 Fine", "silver": "999 Fine" },
"verify_url": "https://oro.vakeelji.com/verify/OP-POH-261014-3FA9C21B",
"image_url": "https://api.oropocket.com/public/certificate-image/9f2c…e41.png",
"image_width": 1080,
"image_height": 1209,
"reused": false
}
}| Field | Type | Description | |
|---|---|---|---|
| cert_no | string | required | The certificate number. Anyone can enter it at oro.vakeelji.com. |
| issued_at · issued_at_display | string | required | The moment the certificate speaks for, in IST. |
| holder_name | string | required | The KYC name when the user's KYC is approved (name_verified true), otherwise their profile name. |
| gold_grams · silver_grams | number | required | Everything the user holds with OroPocket, including SIP holdings. Grams only: the certificate carries no rupee value. |
| verify_url | string | required | Independent verification on the auditor's site, oro.vakeelji.com. It confirms the certificate is genuine and shows what it certified. |
| image_url | string | required | The certificate as a PNG. Anyone with the link can open it, so share it only with the user. |
| reused | boolean | required | true when this is the certificate you already got today (see below). |
Good to know
- It covers the user's full OroPocket holdings, the same as the certificate in the OroPocket app. That can be more than your sub-wallet view in
/portfolioif the user also holds gold with us outside your app. - One certificate per day while nothing changes. Calling again on the same day (IST) returns the same certificate, with
reused: true, as long as the holdings and name are unchanged. Once they change, you get a new certificate with a new number. Old certificates stay verifiable: the auditor's page shows what each one certified when it was issued. - The image never changes once issued, so you can cache it.
- Sandbox (
oro_test_keys) returns a fixed sample markedsimulated: true, with a watermarked image and noverify_url.
| Error | Meaning |
|---|---|
| 403 API_NOT_ALLOWED | Your key doesn't have the balance capability. |
| 404 USER_CODE_NOT_FOUND | The user_code isn't one of your users. |
| 503 HOLDINGS_UNAVAILABLE | We couldn't read the holdings cleanly just now, so we didn't certify a guess. Retry shortly. |
The certificate states holdings at one moment. For live balances use
GET /partner/users/:user_code/portfolio.