---
title: "Verify account"
method: POST
path: "/verify-account"
tags: ["General"]
---

# Verify account

`POST /verify-account`

Resolves the account holder name when available. For some fiat corridors (e.g. KES M-Pesa), `data` may be `"OK"` when the account is valid but no display name is returned — supply your own `accountName` on the order in that case.

## Request body

- VerifyAccountRequest
  - `institution` string, required — Institution code (SWIFT code or custom PayCrest code ending with 'PC'). See [Code Standards](/resources/code-standards) for details.
  - `accountIdentifier` string, required — Bank account number, mobile wallet MSISDN, Till/Paybill identifier, or other account identifier. For **mobile_money** institutions, the API normalizes phone numbers before verification: strips `+`, removes a leading domestic `0`, and adds the country dial code when missing (KES 254, UGX 256, TZS 255, GHS 233, MWK 265). Examples for KES M-Pesa — `0712345678`, `+254712345678`, and `254712345678` all normalize to `254712345678`. KES Till/Paybill identifiers are not normalized when `metadata` indicates Till/Paybill, or when the value looks like Paybill (`business|reference`) or Till (fewer than 9 digits).
  - `metadata` object — Optional. Used for KES Till/Paybill verify so phone normalization is not applied. Same semantics as recipient `metadata` on order create (e.g. `channel` Till or Paybill, `businessNumber`).

## Response `200`

Account verified

- object
  - `status` string
  - `message` string
  - `data` string — Resolved account name, or `"OK"` when valid but name lookup is unavailable

## Other responses

- `400` — Bad request
- `502` — Bad gateway
- `503` — Service unavailable

---

[API](https://skmtc.net/paycrest/apis/paycrest-aggregator-api.md) · [All operations](https://skmtc.net/paycrest/apis/paycrest-aggregator-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/paycrest/paycrest-aggregator-api/versions/f20903971a91/schema)
