API referenceName enquiry

Name enquiry

Resolve an NGN account number to its bank-of-record name. Useful for confirming a recipient before submitting a payout — the same resolution we run server-side on every NGN payout.

NGN-only. FX currencies don’t have an equivalent universal lookup.


Resolve account name

POST /v1/name-enquiry

Request

{
  "account_number": "0690000032",
  "bank_code": "044",
  "currency": "NGN",
  "bank_name": "Access Bank"
}
FieldRequiredNotes
account_numberyesNUBAN — exactly 10 digits
bank_codeyesCBN 3-digit code
currencyyesMust be NGN
bank_namenoOptional hint to bias routing — speeds up the cascade

Behavior

The endpoint walks the routing cascade for the merchant + bank. We try each eligible rail in order until one returns a successful resolve, OR all are exhausted.

Beneficiary cache is checked first: if you’ve previously paid this account successfully, we return the cached name instantly without an upstream call. This makes repeat lookups effectively free.

Live env runs the full cascade: capability-first ordering across rails, falling through to the next if any returns “unresolvable”. Sandbox env uses a single configured resolver (Technest configures the resolver per env; sandbox favours the highest-quota rail to keep integration tests unblocked).

Example

curl https://api.swappr.me/v1/name-enquiry \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "account_number": "0690000032",
    "bank_code": "044",
    "currency": "NGN"
  }'

Response

{
  "resolved_name": "ADAEZE BLESSING NWAFOR",
  "source": "provider"
}
FieldNotes
resolved_nameBank-of-record name, uppercased
sourcebeneficiary_cache (already saved + verified) or provider (live lookup)

The response also includes a resolved_by_provider string with an opaque internal identifier of the rail that handled the resolve. This value is unstable — Technest may swap rails without notice. Don’t branch on it; treat it purely as diagnostic information when filing support tickets.

Errors

CodeHTTPCause
unsupported_currency400Only NGN supported today
invalid_account_number400Not 10 digits
recipient_unresolvable422Every eligible rail returned “unresolvable”
provider_error502All upstream rails errored (transient) — retry with same idempotency key

Use cases

  1. Confirm before paying — show the resolved name in your UI (“You’re paying: ADAEZE BLESSING NWAFOR”) so the user spots typos.
  2. Validate beneficiary forms — call this endpoint when the user types account_number + bank_code, before allowing them to save.
  3. Reconciliation — verify a name on file matches what the bank says today (names sometimes change after marriage / corrections).

The resolved name is always preferred over merchant-supplied names when creating payouts. The actual POST /v1/payouts flow runs the same resolve internally and overwrites whatever name you submitted with the bank-of-record value — the bank is the source of truth, not the input.