Debit Cards
Issue, manage, and monitor Visa debit cards for customers under your GMA partner account.
Cards
Issue, manage, and monitor Visa debit cards for customers under your GMA partner account.
Cards are physical Visa debit cards linked to a managed customer. As a GMA partner you can order a card for an eligible customer, view card details, control spend and ATM access, request a block or card cancellation, review fees and limits, and inspect transaction history.
You do not create customers through the Cards API. Customers must already exist and be associated with your partner account before a card can be ordered or managed. Sensitive card data such as full PAN, CVV, and PIN is never returned.
All endpoints require a session-token. The broker profile must have financial transactions enabled.
Key concepts
- Debit cards only — This API covers Visa debit cards. Credit cards are not supported.
- Card ownership — Every card belongs to a managed customer under your GMA partner account. You can only access cards for customers associated with your partner account.
- Card reference — Use the card identifier returned by the list endpoint as
{cardId}on fees, limits, transactions, suspend, ATM, and block endpoints. - Ordering — Use
POST /cards/orderto request a physical debit card for a managed customer. The call completes in the same request and returns the order result. Delivery address and related fields are required at order time. - Spend controls — Suspend or resume card spend with
POST /cards/{cardId}/suspend. Enable or disable ATM usage withPOST /cards/{cardId}/atm. - Block / card cancellation —
GET /cards/block-reasonsreturns the dropdown values.POST /cards/{cardId}/blockimmediately suspends card transactions and places a cancellation request. For blocking or cancelling the card,BlockReasonis mandatory. Once the card is fully blocked or cancelled, partners receive aCARD_STATUS_CHANGEDwebhook. - Fees —
GET /cards/{cardId}/feesreturns configured fee values as currency strings with a leading$(for example"$25.00"). - Limits —
GET /cards/{cardId}/limitsreturns purchase and ATM limits, including daily, monthly, per-transaction, and per-ATM-transaction values where configured. Amounts are numbers with 2 decimal places; missing/invalid isnull. - Transactions —
GET /cards/{cardId}/transactionsreturns a paged list (newest first). DefaultPageSizeis 20 (10/20/25/50/100). Date and time are UTC.Amountis a number with 2 decimal places (nullif invalid, not0). Each row includesTransactionNumber. Filter by date range, amount, merchant, country, MCC, status, and transaction type. Status acceptsAUTHORIZEDor PascalCase (Authorized). Non-production only:POST /cards/{cardId}/transactionscreates a purchase or ATM transfer for testing. POST is blocked when the card is not Active or FTE is off; spend suspend blockscardPurchaseonly; ATM off blockscardATMonly. - Field casing — Path params use camelCase (
userId,cardId). Body, query, and most response fields use PascalCase (for exampleUserId,CardId,BlockReason,AtmEnabled,Suspended).GET /cards/block-reasonsreturns{ value, label }.
Sample values: userId / UserId = -8202289338547523753, cardId = 55d0c52f-79ee-4d38-acf4-a16c07957898.
Changelog
- Create Card Order —
POST /cards/orderis synchronous (creates the card order and returns the final result in the same request). - Transactions filters —
Mccnumeric = exact MCC code; text = description match.Countryaccepts name / alpha-2 / alpha-3 / ISO numeric and matches transaction + acquiring institution country. - Limits — added
PerTransactionLimitandPerAtmTransactionLimit(same resolve order as other limits). - Fees — fee amounts are
$xx.xxcurrency strings (not bare numbers). - Block / card cancellation —
GET /cards/block-reasonsandPOST /cards/{cardId}/block. - Card transactions — paged GET list (
PageNumber/PageSize); non-production POST create (cardPurchase/cardATM). - GET card transactions — added
TransactionNumber; droppedBillingAmount,BillingCurrency,MerchantCity. - Money fields — 2-decimal numbers on GET transactions, GET limits, and
CARD_LIMITS_CHANGED. Missing/invalid isnull, not0or"17.000000000". - POST create — FTE / suspend / ATM flag checks (non-production only).
What is available
| Capability | Endpoint |
|---|---|
| Create / order physical debit card | POST /cards/order |
| List cards for a customer | GET /cards/{userId} |
| Virtual card details | GET /cards/{cardId}/card-display |
| Suspend / resume spend | POST /cards/{cardId}/suspend |
| Enable / disable ATM | POST /cards/{cardId}/atm |
| List block / cancellation reasons | GET /cards/block-reasons |
| Block / cancel card | POST /cards/{cardId}/block |
| Get configured fees | GET /cards/{cardId}/fees |
| Get limits | GET /cards/{cardId}/limits |
| List card transactions | GET /cards/{cardId}/transactions |
| Create card transaction (non-production) | POST /cards/{cardId}/transactions |
Common workflow
POST /cards/orderwith PascalCase address +MothersMaidenName(synchronous).GET /cards/{userId}— list cards (CardId= card reference ID).- Once
CardStatusisActive, use suspend/resume and ATM toggle as needed. - To request a block / cancellation:
GET /cards/block-reasons, thenPOST /cards/{cardId}/blockwithBlockReason. - Use fees, limits, and transactions endpoints by
cardIdafter the card exists.
Empty list behavior: If the customer exists and the broker has access but no cards exist, GET /cards/{userId} returns HTTP 200 with ResponseData as the string "Card not available" (not 404).