---
page_title: Credit / Debit Card transaction
product: API Reference
page_source: https://juspay.io/in/docs/api-reference/docs/express-checkout/credit--debit-card-transaction
openapi: https://juspay.io/in/docs/api/swagger?document=https%3A%2F%2Fjuspay.io%2Fin%2Fdocs%2Fapi-reference%2Fdocs%2Fexpress-checkout%2Fcredit--debit-card-transaction
llms_txt: https://juspay.io/in/docs/llms.txt
product_llms_txt: https://juspay.io/in/docs/api-reference/llms.txt
---

## API Version: default


# Credit / Debit Card transaction



> **Note**
> * **Compliance Check:**  Merchants who are not PCI DSS compliant should refrain from using this API and consume our [PayV3.js](https://docs.juspay.in/payv3) for cards.
> * Card Security Code (CVV) is not required in case of Pluxee | Sodexo saved card and token transactions of VISA and MASTERCARD (Select issuing banks only). Refer to List Stored Card API for further details



**EMI Support Matrix** 

The following are the valid combinations for emi_bank and emi_tenure, although you need to check if bank has approved all the tenures for your gateway account. JusPay does not validate this for you.


| EMI Bank | Card Type | EMI Tenure | Supported Gateways |
|---|---|---|---|
| HDFC | Credit | 3,6,9,12,18,24,36 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,GOCASHFREE,BILLDESK |
| CITI | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,GOCASHFREE,BILLDESK |
| ICICI | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE,BILLDESK |
| SBI | Credit | 3,6,9,12 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE,BILLDESK |
| AXIS | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE,BILLDESK |
| SCB | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,GOCASHFREE,BILLDESK |
| KOTAK | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE,BILLDESK |
| HSBC | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE,BILLDESK |
| BOB | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,GOCASHFREE,BILLDESK |
| AU | Credit | 3,6,9,12,18,24 | PAYU,PAYTM_V2,GOCASHFREE |
| AMEX | Credit | 3,6,9,12 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE |
| INDUSIND | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,CCAVENUE,GOCASHFREE,BILLDESK |
| IDFC | Credit | 3,6,9,12,15,18,24,36 | PAYU,PAYTM_V2,BILLDESK |
| JNK | Credit | 3,6,9,12 | BILLDESK |
| ONECARD | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2 |
| IDBI | Credit | 3,6,9,12 | PAYU,PAYTM_V2,BILLDESK |
| FEDERAL | Credit | 3,6,9,12,18,24 | RAZORPAY,GOCASHFREE |
| RBL | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,GOCASHFREE,BILLDESK |
| YES | Credit | 3,6,9,12,18,24 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,GOCASHFREE,BILLDESK |
| SBIDC | Debit | 6,9,12,18 | PAYU,BILLDESK |
| KOTAKDC | Debit | 1,2,3,6,9,12 | RAZORPAY,PAYU,PINELABS |
| FEDERALDC | Debit | 3,6,9,12 | PAYU |
| BOBDC | Debit | 3,6,9,12,18 | RAZORPAY,PAYU |
| ICICIDC | Debit | 3,6,9,12 | PAYU,PINELABS,PAYTM_V2 |
| AXISDC | Debit | 3,6,9,12,18,24 | PAYU,PINELABS |
| HDFCDC | Debit | 3,6,9,12,18 | RAZORPAY,PAYU,PINELABS,PAYTM_V2,BILLDESK |
| BAJAJFINSERV | - | 3,6,9,12 | RAZORPAY,PAYU, BAJAJFINSERV |


> **Note**
> Please find the eligibility amount range for some of the EMI options as provided by PayU




| EMI Option | Amount Range |
|---|---|
| HDFC Debit Card EMI | 5,00,000 >= Txn amount >= 5,000 |
| Bajaj Finserv EMI | Transaction amount >= 4,499 |
| Zest Money EMI | 3,00,000 >= Transaction amount >= 1,000 |
| Axis Debit Card EMI | 1,00,000 >= Transaction amount >= 5,000 |
## Endpoints:
- Sandbox: https://sandbox.juspay.in/txns

- Production: https://api.juspay.in/txns

## Request Type: 
POST

## Headers:

#### Content-Type:
application/x-www-form-urlencoded
- Tags: String, Mandatory

#### x-routing-id:
We recommend passing the customer_id as the x-routing-id. If the customer is checking out as a guest, you can pass an alternative ID that helps track the payment session lifecycle. For example, this could be an Order ID or Cart ID.

> **Warning**
> This ID is associated with the customer. It plays a key role in ensuring consistency and maintaining connections across different systems. If you fail to pass the same x-routing-id for the same customer in all related API calls, it could lead to issues with API functionality. Therefore, it’s crucial that you use the same x-routing-id for all requests tied to the same customer.


- Value: customer_1122
- Tags: String, Required
## Sample Code Snippets:
### Sample Request:

#### New Card Code Snippet:

```new card
curl -X POST https://api.juspay.in/txns \
-H 'x-routing-id: customer_1122'\
-d "order_id=:order_id" \
-d "merchant_id=:merchant_id" \
-d "payment_method_type=CARD" \
-d "payment_method=VISA" \
-d "card_number=4242424242424242" \
-d "card_exp_month=10" \
-d "card_exp_year=20" \
-d "name_on_card=Name" \
-d "card_security_code=111" \
-d "save_to_locker=true" \
-d "tokenize=true" \
-d "redirect_after_payment=true" \
-d "format=json" \
-d "offers=[3a8fc1dc-2ace-4f15-8bae-16b376785692]"
```

#### Saved Card Code Snippet:

```saved card
curl -X POST https://api.juspay.in/txns \
-H 'x-routing-id: customer_1122'\
-d "order_id=:order_id" \
-d "merchant_id=:merchant_id" \
-d "payment_method_type=CARD" \
-d "card_token=:card_token" \
-d "card_security_code=111" \ #optional field for CVV less supported transactions
-d "redirect_after_payment=true" \
-d "format=json" \
-d "offers=[3a8fc1dc-2ace-4f15-8bae-16b376785692]"
```

#### Avs Request Payload Code Snippet:

```avs request payload
// A regular card transaction with AVS
curl -L 'https://api.juspay.in/txns' \
-H 'x-routing-id: customer_1122' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'order_id=%3Aorder_id' \
-d 'merchant_id=%3Amerchant_id' \
-d 'payment_method_type=CARD' \
-d 'payment_method=VISA' \
-d 'card_number=4242424242424242' \
-d 'card_exp_month=10' \
-d 'card_exp_year=20' \
-d 'name_on_card=Name' \
-d 'card_security_code=111' \
-d 'save_to_locker=true' \
-d 'tokenize=true' \
-d 'redirect_after_payment=true' \
-d 'format=json' \
-d 'transient_info=%7B%0A%20%20%20%22billing_address_information%22%3A%20%7B%0A%20%20%20%20%20%20%20%22billing_address_line1%22%3A%20%2241%22%2C%0A%20%20%20%20%20%20%20%22billing_address_line2%22%3A%20%22310%20Street%22%2C%0A%20%20%20%20%20%20%20%22billing_address_country%22%3A%20%22CANADA%22%2C%0A%20%20%20%20%20%20%20%22billing_address_postal_code%22%3A%20%22AB%20456%22%2C%0A%20%20%20%20%20%20%20%22billing_address_country_code_iso%22%3A%20%22CA%22%0A%20%20%20%7D%0A%7D'
```

### Sample Response:

#### Response:
```json
{
  "order_id": ":order_id",
  "txn_id": ":txn_id",
  "status": "PENDING_VBV",
  "payment": {
    "authentication": {
      "method": "GET",
      "url": "https://api.juspay.in/pay/start/guest/8646a7a0xxx74fxxxx95fec00340a507"
    }
  }
}
```

## Body Parameters:
### Parameters:

#### order_id:
- Description: order_id pertaining to the order for which the payment is started.
- Tags: string, Mandatory

#### merchant_id:
- Description: ID of the merchant_account that you hold with us.
- Tags: string, Mandatory

#### payment_method_type:
- Description: Must be CARD.
- Tags: string, Mandatory

#### payment_method:
- Description: One of VISA/MASTERCARD/MAESTRO/AMEX/RUPAY. This is usually inferred from the card number itself and we will take care of this if you are unable to provide this from your end.
- Tags: string

#### card_token:
- Description: A valid card token obtained using /card/list API. If you send this parameter, then card_number, name_on_card, card_exp_year, card_exp_month fields are not required. If the token is generated using the /card/tokenize API, card_number, name_on_card, card_exp_year, card_exp_month and card_security_code fields are not required.NOTE: expiry of card_token is 15 mins from the time generation.
- Tags: string, Mandatory

#### card_number:
- Description: A valid credit/debit card number
- Tags: string, Mandatory

#### name_on_card:
- Description: Card holder name. Should contain alphabetical characters only.
- Tags: string

#### card_exp_year:
- Description: Represent the expiry year of the card as YY (two digits only)
- Tags: string, Mandatory

#### card_exp_month:
- Description: Represent the expiry month of the card as MM (two digits only)
- Tags: string, Mandatory

#### card_security_code:
- Description: CVV of the card. Usually three digits. Optional for all VISA saved cards, PLUXEE | SODEXO saved cards, and saved cards of select issuing banks of MASTERCARD
- Tags: string, Mandatory

#### save_to_locker:
- Description: This is a boolean variable and accepts true/false. If set to true, then the card will be saved in locker when the transaction is successful. Else, the card will not be saved.
- Tags: boolean, Mandatory

#### redirect_after_payment:
- Description: This is a boolean variable and accepts true/false. We recommend that you set this to true and use the redirection flow. If set to true, then the user is redirected to the return_url configured for the order. If set to false, then the user will be stopped at the response page from the gateway. Your client should be able to read the page/title to infer that the user has completed the transaction.
- Tags: boolean, Mandatory

#### format:
- Description: f it is set to json, then the response will be HTTP 200 with a JSON formatted text. Otherwise, the response is HTTP 302 with the Location attribute having the destination URL.
- Tags: string, Mandatory

#### is_emi:
- Description: Default is false. Set it to true if the user wishes to perform an EMI transaction on the given card.
- Tags: boolean

#### emi_bank:
- Description: Represents the bank that issued the card. Value must be one of the entries mentioned under EMI Bank in the support matrix below.
- Tags: string

#### emi_tenure:
- Description: The tenure of the EMI in number of months.
- Tags: integer

#### auth_type:
- Description: THREE_DS/OTP/VISA_CHECKOUT
- Tags: string

#### emi_type:
- Description: The type of EMI ie STANDARD_EMI or NO_COST_EMI
- Tags: string

#### offers:
- Description: The key offers should be passed only when juspay offers are being used. The value for this key can set as the offerID which is received from /v1/offers/list api
- Tags: array of Strings

#### supported_gateway_id:
- Description: Array of gateway IDs should be passed, only for EMI transactions. If an EMI plan is supported by a specific set of gateways, then the same list should be passed in this field so that transaction will get routed to the proper gateway. Read ‘gateway_id‘ from ‘supported_gateways‘ in EMI Plans v2 response
- Tags: Array of Integers

#### tokenize:
- Description: This is a boolean variable and accepts true/false. Required to be passed as true when card needs to be saved for future transactions. (Note: This is an additional requirement along with save_to_locker)  
- Tags: boolean, Mandatory

#### transient_info:
- Description: This is a JSON object, that has to be passed in the body that should contain the following keys:

* **billing_address_line1**  [House No. or Name] - Mandatory
* **billing_address_line2**  [Street**]**  - Mandatory
* **billing_address_country**  [Country] - Mandatory
* **billing_address_postal_code**  [Postal code] - Mandatory
* **billing_address_country_code_iso**  [Country code ISO] - Optional
  
  (Note: This field is optional, but if used, all the mandatory billing address fields must be populated. They can be used to pass the user's billing address to the payment gateways, either to capture billing details or for Address Verification (AVS) when required. In AVS flows, the billing address is verified against the cardholder’s address by the downstream PG to help reduce the risk of fraudulent transactions, especially during international card usage.)
- Tags: JSON Object, AVS
## API Responses:
### 200:

#### order_id:
- Description: :order_id
- Tags: string

#### txn_id:
- Description: :txn_id
- Tags: string

#### status:
- Description: PENDING_VBV
- Tags: string

#### payment:
- Value:
  - **Authentication.method**:
    - Tags: string
  - **Authentication.url**:
    - Tags: String
- Tags: object
### 400:

#### status:
- Description: error
- Tags: string

#### error_message:
- Description: Order timed out
- Tags: string

#### error_code:
- Description: invalid_request
- Tags: string


---

## See Also

- [Refresh All Wallets](https://juspay.io/in/docs/api-reference/docs/express-checkout/refresh-all-wallets)
- [Card Encryption](https://juspay.io/in/docs/api-reference/docs/express-checkout/card-encryption)
