Skip to main content
POST
Issue a virtual card

Authorizations

X-Numero-Api-Key
string
header
required

Your business API key (live_key_...). Issued on approval; managed in Dashboard β†’ Settings β†’ Developer.

X-Numero-Signature
string
header
required

Base64(HMAC-SHA256(publicApiKey, input)) over the raw request body (POST) or canonicalized query string (signed GET). Also send X-Numero-Signature-Version: v2. Required on money-movement / state-changing endpoints (marked πŸ”’).

The HMAC key is your Public Key as raw UTF-8 bytes β€” a SECRET despite the name, and a different value from the X-Numero-Api-Key authentication header. Signing with the API key will never produce a valid signature.

Body

application/json
productCode
string
required

Card product code (drives currency + card type). Use a code returned by GET /business/card/products.

Example:

"USD_APPLE_PAY"

initialBalance
number
required

Total customer activation debit from the USD CARD wallet. Current minimum: USD 10, including USD 5 mandatory initial funding available to spend. A lower value returns activation_required with error.param initialBalance. This is not necessarily the resulting spendable card balance.

Required range: x >= 10
Example:

10

firstName
string
required
lastName
string
required
email
string<email>
required

Required for inline creation of a new cardholder. To reuse an existing cardholder, use POST /business/cardholders/{customerId}/cards.

phone
string
required

Required for inline creation of a new cardholder; include the country calling code.

dateOfBirth
string<date>
required

Required for inline creation of a new cardholder (YYYY-MM-DD).

address1
string
required

Required residential street address for inline cardholder creation.

city
string
required
state
string
required
zipcode
string
required
country
string
required

ISO 3166-1 alpha-2 country code.

Example:

"NG"

idType
enum<string>
required
Available options:
PASSPORT,
NIN,
NATIONAL_ID,
DRIVERS_LICENSE,
VOTERS_CARD,
RESIDENT_ID
Example:

"PASSPORT"

idNumber
string
required
idDocumentFrontUrl
string<uri>
required

Direct public HTTPS JPEG/PNG identity-document URL required for inline cardholder creation. Missing or malformed URLs return HTTP 400 validation_error with error.param=idDocumentFrontUrl before funding reservation. Test keys validate the URL but substitute synthetic image bytes before the simulated provider call. Not a PDF, asset share page, or base64 payload.

gender
enum<string>
required

Required for inline cardholder creation.

Available options:
male,
female
proofOfAddressDocumentUrl
string<uri>
required

Direct public HTTPS proof-of-address image required for inline cardholder creation; Numero converts it to the issuer representation.

proofOfFunds
object
required

Customer-attested answers. Do not invent answers or substitute example values.

capability
enum<string> | null

Card type. Every card is a wallet-enabled USD card, so this is optional β€” omit it, or send APPLE_PAY or GOOGLE_PAY to issue a wallet-enabled USD card the cardholder can add to Apple/Google Wallet. Numero routes to an issuer that supports it.

Available options:
USD,
APPLE_PAY,
GOOGLE_PAY,
null
Example:

"APPLE_PAY"

brand
string | null
Example:

"visa"

label
string | null

Friendly card name.

Example:

"Ads spend"

bvn
string | null
idDocumentBackUrl
string<uri> | null

Direct HTTPS reverse-side document image, when applicable.

Response

The issued card (masked only)

Canonical response envelope for the public surface. data on success, error on failure.

data
object
required

A card as exposed to you β€” masked only.

error
object | null
required
meta
object
required