Partner API

Request physical card

Requests production of a physical card for an existing digital card.

The plastic chip is personalized with an NDEF MIME record (application/vnd.taappa.card+json) containing {"version":1,"card_number":"..."}. Phone taps still use IsoDep/HCE; both converge on the same card_number at the terminal. Recommended blanks: NTAG215 (or NTAG213). DESFire is not required for this flow.

POST/partner/v1/physical-card-requests

Request

http
Authorization: Bearer <YOUR_API_KEY>
Content-Type: application/json
Idempotency-Key: <optional>
FieldTypeRequiredDescription
wallet_idstringYeswallet_id from Issue digital card
card_seriesstringYesActive digital card series (10 characters)
json
{
  "wallet_id": "6a959342454db4ecdc9fef5d",
  "card_series": "3GGEN3QVVV"
}

Response

If an open request already exists for the card, that request is returned.

json
{
  "id": "7b0a1c2d3e4f5a6b7c8d9e0f",
  "wallet_id": "6a959342454db4ecdc9fef5d",
  "card_series": "3GGEN3QVVV",
  "card_number": "6288882195295846",
  "provider": "telebirr",
  "status": "PENDING",
  "created_at": "2026-08-31T14:44:18.326623"
}
FieldTypeDescription
idstringPhysical card request ID
wallet_idstringPartner wallet ID
card_seriesstringSeries to produce
card_numberstringCard number
providerstringProvider slug
statusstringCurrent request status
created_atstringISO 8601 creation time

Statuses

StatusDescription
PENDINGSubmitted and awaiting production
IN_PRODUCTIONIn production
REJECTEDRejected
COMPLETEDProduced successfully
FAILEDProduction failed

Status changes are delivered via webhooks.

Errors

StatusDetail
400Active digital card required
400card_series does not match wallet
400card_series must be 10 characters
404Wallet not found
401Not authenticated / Invalid API key

Example

bash
curl https://api.taappa.com/partner/v1/physical-card-requests \
  -H "Authorization: Bearer $TAAPPA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet_id": "6a959342454db4ecdc9fef5d",
    "card_series": "3GGEN3QVVV"
  }'