Skip to main content

Cards

Create Card

Creates a new virtual card for a given cardholder and wallet.

{{baseUrl}}/hashdt/issuing/api/v1/card

Description

This API creates a virtual card for a cardholder. Spend limits are optional; if not provided, the program-level default limits are applied.

Note:

  • This API supports virtual card creation only. To issue a physical card, use the separate Assign Card API instead.
  • Virtual cards are activated automatically upon creation.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

📦 Request Body

card_type string required

Type of card. Allowed value: VIRTUAL

card_holder_id string required

The ID of the cardholder to associate this card with.

created_by string required

Full legal name of user requesting new card

request_id string required

Unique request ID used for idempotency

program object required

Program details for card issuance.

purpose string required

Purpose of the card. Allowed value: COMMERCIAL.

authorization_controls object required

Transaction control configurations.

allowed_transaction_count string required

Specifies the card usage type. Only MULTIPLE is currently supported — the card can be used for multiple debit transactions.

transaction_limits object required

Configuration for transaction limits.

currency string required

Currency for transaction limits (3-letter ISO-4217 code).

limits array

Transaction limits are based on interval and amount.

amount double required

Transaction limit amount. Must be greater than 0.

interval string required

Limit interval. Allowed value: PER_TRANSACTION.

is_personalized boolean required

Indicates whether the card is personalized. This field is only applicable to physical cards. Since this API supports only virtual card creation for this program, the value must always be false.

Request Example

curl --location --request POST \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card' \
--header 'x-api-key: {{Shared X-API Key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"card_type": "VIRTUAL",
"card_holder_id": "individual_cardholder_id",
"created_by": "Postman Test",
"request_id": "your-request-id",
"program": {
"purpose": "COMMERCIAL"
},
"authorization_controls": {
"allowed_transaction_count": "MULTIPLE",
"transaction_limits": {
"currency": "USD",
"limits": [
{
"amount": 1000,
"interval": "PER_TRANSACTION"
}
]
}
},
"is_personalized": false
}'

Response Example

{
"status": "success",
"message": "Card created successfully.",
"code": 201,
"data": {
"id": "card-id"
}
}

Assign Card

This API assigns a physical card to a cardholder.

{{baseUrl}}/hashdt/issuing/api/v1/card/assign

Description

This API is used to assign a pre-issued physical card to an existing cardholder. The physical card is identified using its card number and is then linked to the specified cardholder, making it available for use.

💡 Physical cards must be activated using Activate Card API before they can be used.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

📦 Request Body

cardholder_id string required

Unique identifier for the cardholder.

card_number string required

The physical card number to be assigned to the cardholder.

card_currency string required

The currency of the card being assigned (3-letter ISO-4217 code).

card_mode string required

Allowed value: SINGLE.
SINGLE indicates a prepaid card, which must be loaded with funds before it can be used.

createdBy string required

Identifier or name of the user creating this request.

Request Example

curl --location --request POST \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card/assign' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"cardholder_id": "cardholder-id",
"card_number": "card-number",
"card_currency": "USD",
"card_mode": "SINGLE",
"created_by": "admin_user"
}'

Response Example

{
"status": "success",
"message": "Card assign successfully.",
"code": 200,
"data": [
{
"card_id": "card-id"
}
]
}

Activate Card

This API is used to activate a assigned physical card.

{{baseUrl}}/hashdt/issuing/api/v1/card/activate

Description

This API is used to activate a physical card and set its PIN, enabling it for card payment authorizations.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

📦 Request Body

activation_code string required

Activation code received via email when the physical card was assigned.

pin string required

6-digit PIN to be set for the card.

🔍 Query Parameters

id string required

Unique identifier for card to activate

Request Example

curl --location --request POST \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card/activate?id={{CardID}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"activation_code": "111222333",
"pin": "123456"
}'

Response Example

{
"code": 200,
"status": "success",
"message": "card activated successfully"
}

Reset PIN

This API resets the PIN for a assigned physical card.

{{baseUrl}}/hashdt/issuing/api/v1/card/pin

Description

This API is used to reset the PIN of an assigned physical card.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

📦 Request Body

pin string required

6-digit PIN to be set for the card.

🔍 Query Parameters

id string required

Unique identifier for card to reset PIN

Request Example

curl --location --request POST \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card/pin?id={{CardID}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"pin": "123456"
}'

Response Example

{
"code": 200,
"status": "success",
"message": "Pin reset successfully."
}

Update Card

This API updates card details including authorization controls and status.

{{baseUrl}}/hashdt/issuing/api/v1/card

Description

This endpoint updates card details by setting the values of the included parameters. Parameters that are not included will be left unchanged.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

📦 Request Body

card_status string

Card status. Allowed values: ACTIVE, INACTIVE, CLOSED.

transaction_limits array

Array of transaction limits.

type string required

Type of limit. Allowed value: PER_TRANSACTION.

value double required

Numerical value of the transaction limit.

updated_by string required

User updating the details

🔍 Query Parameters

id string required

Unique identifier for card to update

Request Example

curl --location --request PATCH \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card?id={{CardID}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"transaction_limits": [
{
"type": "PER_TRANSACTION",
"value": 100
}
],
"updated_by": "test"
}'

Response Example

{
"code": 200,
"status": "success",
"message": "card updated successfully"
}

Recharge Card

Recharge / Load Funds to Card

{{baseUrl}}/hashdt/issuing/api/v1/card/recharge

Description

Adds funds to a specific card associated with the authenticated user. This API performs a card recharge (load) operation and credits the specified amount to the card balance. The card to be recharged is identified using the id query parameter.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

📦 Request Body

amount double required

Amount to be funded to the card. Must be greater than 0.

🔍 Query Parameters

id string required

Unique identifier for card

Request Example

curl --location --request POST \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card/recharge?id={{CardID}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}' \
--data '{
"amount": 100.0
}'

Response Example

{
"code": 200,
"status": "success",
"message": "Card recharge successfully."
}

Get All Cards

Retrieves all cards (virtual/physical) associated with the user.

{{baseUrl}}/hashdt/issuing/api/v1/card

Description

This endpoint returns a list of all cards (both physical and virtual) associated with the authenticated user. The response includes key card attributes such as card status, masked number, type, associated cardholder ID, and timestamps for creation and updates.
You can also filter the results using query parameters such as card ID, cardholder ID and card status to retrieve specific card records.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

cardholder_id string

Unique identifier for cardholder

id string

Unique identifier for card

status string

Card status filter. Allowed values: ACTIVE, INACTIVE

page_num integer

Page number for pagination

page_size integer

Number of items per page

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"status": "success",
"message": "Card fetched successfully",
"code": 200,
"data": [
{
"card_hash_id": "card-id",
"card_status": "ACTIVE",
"masked_card_number": "40963608****7655",
"available_balance": 100.0,
"cardholder_id": "cardholder-id",
"created_at": "2026-08-11T13:37:22",
"updated_at": null,
"name_on_card": "John Doe's card",
"card_type": "PHYSICAL",
"currency": "USD",
"postal_address": null
},
{
"card_hash_id": "card-id",
"card_status": "ACTIVE",
"masked_card_number": "40963608****0018",
"available_balance": 10.0,
"cardholder_id": "cardholder-id",
"created_at": "2026-08-11T13:35:25",
"updated_at": null,
"name_on_card": "John Doe's card",
"card_type": "VIRTUAL",
"currency": "USD",
"postal_address": null
}
]
}

Show Card Details

Retrieves the details of a specific card (virtual or physical).

{{baseUrl}}/hashdt/issuing/api/v1/card/detail

Description

This endpoint retrieves comprehensive card information, including card details, cardholder information, card status, spending and authorization controls, program details, and configured card settings. Sensitive card information, such as the card number, is masked for security.

Note: For displaying sensitive card details to end users in a PCI-compliant manner, refer to the Secure Iframe Guide.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

id string required

Unique identifier for card

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/issuing/api/v1/card/detail?id={{CardID}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"status": "success",
"message": "Card details fetched successfully.",
"code": 200,
"data": [
{
"personalized": false,
"card_id": "card-id",
"card_bin": "40963608",
"card_scheme": "VISA",
"card_currency": "USD",
"card_number": "************7655",
"form_factor": "PHYSICAL",
"mode_type": "SINGLE",
"card_product_id": "71405e1f-3fce-4e3c-80fe-08d47b9dec3c",
"card_limit": 0.0,
"available_balance": 10.0,
"cardholder": {
"cardholder_id": "card-id",
"email": "demo@yopmail.com",
"number_of_cards": null,
"first_name": "John",
"middle_name": "P",
"last_name": "Doe",
"create_time": "2026-08-10T16:48:22+08:00",
"cardholder_status": "SUCCESS",
"date_of_birth": "",
"country_code": "",
"phone_number": ""
},
"spending_controls": [
{
"amount": 20000.0,
"interval": "PER_TRANSACTION",
"remaining": null
}
],
"authorization_controls": null,
"no_pin_payment_amount": "USD",
"risk_controls": {
"allow3dsTransactions": "Y"
},
"metadata": {},
"card_status": "ACTIVE",
"brand": null,
"cardholder_id": null,
"created_at": null,
"created_by": null,
"is_personalized": false,
"name_on_card": null,
"nick_name": null,
"program": null,
"purpose": null,
"delivery_details": null,
"postal_address": null
}
]
}