Retrieve user cards
Learn how to retrieve a list of all cards associated with a specific user account. This guide explains how to fetch card data for display or management within your application.
The user in this document pertains to both the individual and business user types.
Use Cases
- You want to retrieve the list of cards associated with a user account.
- You want to retrieve the card IDs from the list of associated cards.
- You want to know the individual status of each card from the list of associated cards.
- You want to display a list of cards that a user owns in your application.
Prerequisites
- The user profile risk assessment status must not be
risk_flagged. - The user profile must be in an
activestatus. - The user must have an
approvedKYC or KYB status. - The user account or wallet must be in an
activestatus. - The user must have already been provisioned with at least one card.
API Workflow
1
Retrieve the list of all cards associated with a user account
Call the Get Wallet (GET /users/wallets) to get the wallet object, which contains a list of all the cards associated with the
Get Wallet request
curl --location 'https://{{cards_base_url}}/{{program_code}}/v1/users/wallets' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: ••••••' \--header 'X-Auth-User-Id: {{user_id}}' Get Wallet response
{
"funds": {
"available": {
"currency": "SGD",
"amount": "0.00"
},
"withholding": {
"currency": "SGD",
"amount": "0.00"
},
"categories": {
"DEFAULT": {
"available": {
"currency": "SGD",
"amount": "0.00"
},
"withholding": {
"currency": "SGD",
"amount": "0.00"
}
}
}
},
"id": "2daec22dec9cde3020e3843e13fcd3d3",
"number": "6377020000000012",
"holder": {
"name": "John Doe"
},
"date": {
"expiry": "2030-03",
"issued": "2025-03-05",
"closed": null
},
"status": {
"is_active": true,
"text": "active"
},
"reason": null,
"details": {
"max_load_limit": 500000,
"fee": "0.00",
"fee_currency": "SGD",
"purse": {
"pre_kyc": {
"purse_max_limit": 750
},
"post_kyc": {
"purse_max_limit": 500000
}
},
"topup_limits": {
"pre_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 2250,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 2250,
"weekly_count_limit": null,
"weekly_transactional_limit": 2250,
"annual_count_limit": null,
"annual_transactional_limit": 15000,
"unit_transactional_limit": 750
},
"post_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 500000,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 500000,
"weekly_count_limit": null,
"weekly_transactional_limit": 500000,
"annual_count_limit": null,
"annual_transactional_limit": null,
"unit_transactional_limit": 500000
},
"current": {
"lifetime_count": 29,
"lifetime_transactional": 12037.259999999998,
"daily_count": 0,
"daily_transactional": 0,
"weekly_count": 0,
"weekly_transactional": 0,
"monthly_count": 0,
"monthly_transactional": 0
}
},
"deduct_limits": {
"pre_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 2250,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 2250,
"weekly_count_limit": null,
"weekly_transactional_limit": 2250,
"annual_count_limit": null,
"annual_transactional_limit": 15000,
"unit_transactional_limit": 750
},
"post_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 500000,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 500000,
"weekly_count_limit": null,
"weekly_transactional_limit": 500000,
"annual_count_limit": null,
"annual_transactional_limit": null,
"unit_transactional_limit": 500000
},
"current": {
"lifetime_count": 20,
"lifetime_transactional": 9093.54,
"daily_count": 0,
"daily_transactional": 0,
"weekly_count": 0,
"weekly_transactional": 0,
"monthly_count": 0,
"monthly_transactional": 0
}
},
"transfer_in_limits": {
"pre_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 2250,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 2250,
"weekly_count_limit": null,
"weekly_transactional_limit": 2250,
"annual_count_limit": null,
"annual_transactional_limit": 15000,
"unit_transactional_limit": 750
},
"post_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 500000,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 500000,
"weekly_count_limit": null,
"weekly_transactional_limit": 500000,
"annual_count_limit": null,
"annual_transactional_limit": null,
"unit_transactional_limit": 500000
},
"current": {
"lifetime_count": 27,
"lifetime_transactional": 23647.45,
"daily_count": 2,
"daily_transactional": 5000,
"weekly_count": 2,
"weekly_transactional": 5000,
"monthly_count": 8,
"monthly_transactional": 5040.7
}
},
"transfer_out_limits": {
"pre_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 2250,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 2250,
"weekly_count_limit": null,
"weekly_transactional_limit": 2250,
"annual_count_limit": null,
"annual_transactional_limit": 15000,
"unit_transactional_limit": 750
},
"post_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 500000,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 500000,
"weekly_count_limit": null,
"weekly_transactional_limit": 500000,
"annual_count_limit": null,
"annual_transactional_limit": null,
"unit_transactional_limit": 500000
},
"current": {
"lifetime_count": 41,
"lifetime_transactional": 6118.829999999998,
"daily_count": 0,
"daily_transactional": 0,
"weekly_count": 0,
"weekly_transactional": 0,
"monthly_count": 22,
"monthly_transactional": 62.489999999999995
}
},
"load_limits": {
"pre_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 2250,
"lifetime_count_limit": null,
"lifetime_transactional_limit": 15000,
"monthly_count_limit": null,
"monthly_transactional_limit": 2250,
"weekly_count_limit": null,
"weekly_transactional_limit": 2250,
"annual_count_limit": null,
"annual_transactional_limit": 15000,
"unit_transactional_limit": 0
},
"post_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 500000,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 500000,
"weekly_count_limit": null,
"weekly_transactional_limit": 500000,
"annual_count_limit": null,
"annual_transactional_limit": null,
"unit_transactional_limit": 0
},
"current": {
"lifetime_count": 0,
"lifetime_transactional": 0,
"daily_count": 0,
"daily_transactional": 0,
"weekly_count": 0,
"weekly_transactional": 0,
"monthly_count": 0,
"monthly_transactional": 0
}
},
"unload_limits": {
"pre_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 2250,
"lifetime_count_limit": null,
"lifetime_transactional_limit": 15000,
"monthly_count_limit": null,
"monthly_transactional_limit": 2250,
"weekly_count_limit": null,
"weekly_transactional_limit": 2250,
"annual_count_limit": null,
"annual_transactional_limit": 15000,
"unit_transactional_limit": 0
},
"post_kyc": {
"allowed": 0,
"daily_count_limit": null,
"daily_transactional_limit": 500000,
"lifetime_count_limit": null,
"lifetime_transactional_limit": null,
"monthly_count_limit": null,
"monthly_transactional_limit": 500000,
"weekly_count_limit": null,
"weekly_transactional_limit": 500000,
"annual_count_limit": null,
"annual_transactional_limit": null,
"unit_transactional_limit": 0
},
"current": {
"lifetime_count": 0,
"lifetime_transactional": 0,
"daily_count": 0,
"daily_transactional": 0,
"weekly_count": 0,
"weekly_transactional": 0,
"monthly_count": 0,
"monthly_transactional": 0
}
}
},
"cards": [
{
"id": "89defae676abd3e3a42b41df17c40096",
"status": {
"is_active": false,
"text": "locked"
},
"type": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/types/sgmmdemomccard",
"method": "GET"
}
],
"links": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/5d6e52ee8586e0a7241b01c897b64666",
"method": "GET"
}
]
},
{
"id": "180ac588b91dc6bff6a5d42a671d1d6a",
"status": {
"is_active": true,
"text": "active"
},
"type": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/types/sgmmdemomccard",
"method": "GET"
}
],
"links": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/3e0d7f14bdd2ea3adecefa8361dd236e",
"method": "GET"
}
]
},
{
"id": "48e96eb31980d217d6d539eb583acbbc",
"status": {
"is_active": false,
"text": "blocked"
},
"type": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/types/sgmmdemomccard",
"method": "GET"
}
],
"links": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/a25ab5a977f604b1398a89f25d9c7168",
"method": "GET"
}
]
}
]
}Parse the cards object to get the count of cards the user has, and create the length of the carousel or list view accordingly.
Sample card object
The card object is an array of all cards associated with the user account, including the basic information about each card.
[
{
"id": "5d9bb6d5cbf2a07f514fd90fe401df2b",
"status": {
"is_active": false,
"text": "locked"
},
"type": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/types/{{card_type}}",
"method": "GET"
}
],
"links": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/5d9bb6d5cbf2a07f514fd90fe401df2b",
"method": "GET"
}
]
},
{
"id": "22f139ca4f5bbf9e2174e9d0a526ed88",
"status": {
"is_active": false,
"text": "active"
},
"type": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/types/{{card_type}}",
"method": "GET"
}
],
"links": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/22f139ca4f5bbf9e2174e9d0a526ed88",
"method": "GET"
}
]
},
{
"id": "b9943321da1382ffb25271b1856f4efb",
"status": {
"is_active": false,
"text": "pending_activation"
},
"type": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/types/{{card_type}}",
"method": "GET"
}
],
"links": [
{
"rel": "self",
"href": "https://{{server}}/{{program_code}}/v1/users/wallets/cards/b9943321da1382ffb25271b1856f4efb",
"method": "GET"
}
]
}
]
},You can use the card type to dynamically fetch the card image associated with that card by generating url dynamically and concatenating it with the card type as below : https://assets.mmvpay.com/global/products/{{card_type}}/card-{{size.png}}
The supported value for size is :
- small
- medium
- large
If needed, you can also use the response of Get Configured Card Types GET /users/wallets/cards/types to display additional details like product name, form factor, and description as well as other auxiliary attributes. The card types object can also be safely cached, rather than you having to call it every time.
2
Display action for each card depending on status
Depending on the card status, you can have your UI show actions available for a particular card. The table below illustrates the actions possible depending on the card status.
| No additional action is possible. This state is irreversible. You can choose to filter the array by status and exclude blocked card statuses to display only the remaining cards to your users |
| Unlock (Unsuspend) |
| Activate |
| View basic details View sensitive details Lock (Suspend) Block (Delete) Set PIN (only for physical cards) |
Related Links
On this page
- Retrieve user cards