Accounts
Read the verification status and eligibility of the customers and corporates linked to your integration. The reasoning and the data boundary are explained in the accounts guide; this page states the shapes.
Both endpoints need account:read. That scope is granted only under a signed data processing agreement. See scopes.
Read a customer
/v1/customers/{customerId}Planned
This is part of the v1 contract and is documented ahead of release. It is not yet served in production. Build against it only once this notice is gone.
Returns the verification status and eligibility of one customer. Only customers linked to your integration can be read; any other customerId returns 404 NOT_FOUND, the same as one that does not exist. account:read requires a signed data processing agreement. Until one is on file the call returns 403 SCOPE_DENIED, even if the key was issued with the scope.
Path parameters
| Parameter | Type | Notes |
|---|---|---|
customerId | string | The opaque identifier MYRT assigned when the customer was linked to your integration |
curl https://sandbox-api.myrt.money/v1/customers/cus_9f2a3b4c \
-H "Authorization: Bearer $MYRT_API_KEY"const res = await fetch(
"https://sandbox-api.myrt.money/v1/customers/cus_9f2a3b4c",
{ headers: { Authorization: `Bearer ${process.env.MYRT_API_KEY}` } }
);
const customer = await res.json();import os, requests
res = requests.get(
"https://sandbox-api.myrt.money/v1/customers/cus_9f2a3b4c",
headers={"Authorization": f"Bearer {os.environ['MYRT_API_KEY']}"},
timeout=30,
)
customer = res.json()Response 200 OK
{
"ok": true,
"customerId": "cus_9f2a3b4c",
"accountType": "RETAIL",
"verification": { "status": "VERIFIED", "level": "TIER_2", "verifiedAt": "2026-04-02T09:11:00.000Z" },
"residency": { "countryCode": "MY", "isResident": true },
"limits": {
"currency": "MYR",
"monthlyWithdrawalCap": "50000.00",
"monthlyWithdrawalUsed": "12500.00",
"monthlyWithdrawalRemaining": "37500.00"
},
"capabilities": { "canMint": true, "canRedeem": true, "canTransfer": true },
"createdAt": "2026-04-01T02:20:14.000Z"
}Response fields
| Field | Type | Description |
|---|---|---|
ok | boolean | true on success |
customerId | string | The identifier you supplied in the path |
accountType | string | RETAIL or ENTERPRISE |
verification.status | string | UNVERIFIED, PENDING, VERIFIED, REJECTED or SUSPENDED |
verification.level | string | A tier label, for example TIER_2. New labels may appear; handle unknown values |
verification.verifiedAt | string or null | ISO 8601 UTC. null unless verification.status is VERIFIED |
residency.countryCode | string | ISO 3166-1 alpha-2 |
residency.isResident | boolean | true for a resident customer. A non-resident customer is limited to RM 100,000 per transaction on mint and redeem (FOREIGNER_LIMIT_EXCEEDED) |
limits.currency | string | The currency the limit values are expressed in |
limits.monthlyWithdrawalCap | string | The monthly withdrawal limit for this customer. Decimal string; see amounts |
limits.monthlyWithdrawalUsed | string | The part of the limit already used this month. Redemptions count against it. Decimal string |
limits.monthlyWithdrawalRemaining | string | The part of the limit still available this month. A redeem above it returns MONTHLY_WITHDRAWAL_LIMIT_EXCEEDED. Decimal string |
capabilities.canMint | boolean | Whether the customer can currently mint |
capabilities.canRedeem | boolean | Whether the customer can currently redeem |
capabilities.canTransfer | boolean | Whether the customer can currently transfer |
createdAt | string | ISO 8601 UTC |
Errors
| Code | HTTP | When |
|---|---|---|
UNAUTHORIZED | 401 | Missing, malformed, unknown, revoked, expired or wrong-environment key |
SCOPE_DENIED | 403 | Key lacks account:read, or no data processing agreement is on file |
NOT_FOUND | 404 | The customer is not linked to your integration, or does not exist |
See errors for the meaning of each code.
Read a corporate
/v1/corporates/{corporateId}Planned
This is part of the v1 contract and is documented ahead of release. It is not yet served in production. Build against it only once this notice is gone.
Returns the verification status and eligibility of one corporate. Only corporates linked to your integration can be read; any other corporateId returns 404 NOT_FOUND, the same as one that does not exist. account:read requires a signed data processing agreement. Until one is on file the call returns 403 SCOPE_DENIED, even if the key was issued with the scope.
Path parameters
| Parameter | Type | Notes |
|---|---|---|
corporateId | string | The identifier of a corporate linked to your integration, for example cor_71bd5e29 |
curl https://sandbox-api.myrt.money/v1/corporates/cor_71bd5e29 \
-H "Authorization: Bearer $MYRT_API_KEY"const res = await fetch(
"https://sandbox-api.myrt.money/v1/corporates/cor_71bd5e29",
{ headers: { Authorization: `Bearer ${process.env.MYRT_API_KEY}` } }
);
const corporate = await res.json();import os, requests
res = requests.get(
"https://sandbox-api.myrt.money/v1/corporates/cor_71bd5e29",
headers={"Authorization": f"Bearer {os.environ['MYRT_API_KEY']}"},
timeout=30,
)
corporate = res.json()Response 200 OK
{
"ok": true,
"corporateId": "cor_71bd5e29",
"companyName": "Acme Sdn Bhd",
"verification": { "status": "VERIFIED", "stage": "COMPLETE", "verifiedAt": "2026-05-18T03:44:00.000Z" },
"jurisdiction": { "countryCode": "MY" },
"industry": "Payments",
"capabilities": { "canMint": true, "canRedeem": true, "canPayroll": true },
"createdAt": "2026-05-02T01:02:03.000Z"
}Response fields
| Field | Type | Description |
|---|---|---|
ok | boolean | true on success |
corporateId | string | The identifier you supplied in the path |
companyName | string | Company name |
verification.status | string | UNVERIFIED, PENDING, VERIFIED, REJECTED or SUSPENDED |
verification.stage | string | A stage label, for example COMPLETE. Handle unknown values |
verification.verifiedAt | string or null | ISO 8601 UTC. null unless verification.status is VERIFIED |
jurisdiction.countryCode | string | ISO 3166-1 alpha-2 |
industry | string | The industry the corporate operates in |
capabilities.canMint | boolean | Whether the corporate can currently mint |
capabilities.canRedeem | boolean | Whether the corporate can currently redeem |
capabilities.canPayroll | boolean | Whether the corporate currently has the payroll capability |
createdAt | string | ISO 8601 UTC |
Errors
| Code | HTTP | When |
|---|---|---|
UNAUTHORIZED | 401 | Missing, malformed, unknown, revoked, expired or wrong-environment key |
SCOPE_DENIED | 403 | Key lacks account:read, or no data processing agreement is on file |
NOT_FOUND | 404 | The corporate is not linked to your integration, or does not exist |
See errors for the meaning of each code.
Never returned
By design, and permanently, these endpoints never return:
- Email addresses or phone numbers
- Legal names of individuals
- National identity or passport numbers
- Uploaded verification documents, or links to them
- Residential or registered addresses
- IP addresses, login history or device data
- Internal identifiers
- Wallet addresses other than the ones you supplied on your own orders
- Any data about a party you did not onboard
A request for any other party returns 404 NOT_FOUND, the same as a party that does not exist. Identity attributes beyond what is shown on this page need a separate agreement with a separate legal basis under the Personal Data Protection Act of Malaysia. They are not part of the partner API.
