> ## Documentation Index
> Fetch the complete documentation index at: https://devzone.nayax.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Charge Token

Processes a payment using a previously saved card token. This endpoint is primarily used for recurring payments (MIT or CIT transactions).

This endpoint may be exposed server-to-server for two-factor authentication flows, potentially requiring changes to authentication mechanisms. Recurring payment calls will originate only from the server. Fiscalization and eReceipt processes should also be operated during this flow.

## Request

Requests are performed to the[ `/charge-token`](https://devzone.nayax.com/reference/ecom/payments/charge-token) endpoint.

```json theme={null}
{
  "basicInfo": {
    "requestType": 0,
    "entryMode": 1,
    "amount": 25.5,
    "currency": "EUR",
    "countryCode": "DE",
    "tokenModel": 1,
    "cvc": null,
    "token": "NAYAXTOK12345",
    "merchantRequestId": "MERCHANT_MIT_001",
    "transactionId": null,
    "transactionTimeUtc": null,
    "isSaveTokenWithoutConsent": false
  },
  "machineInfo": {
    "machineId": "0434334921100366"
  },
  "cardHolderInfo": {
    "cardholderEmail": "customer@example.com",
    "cardHolderUniqId": "unique_customer_id_123"
  },
  "additionalInfo": {
    "additionalData": "{\"loyaltyPoints\": 100}",
    "additionalReceiptData": "[{\"key\":\"product\", \"value\":\"Premium Service\"}]"
  },
  "validationKey": "AUTH_VALID_KEY_XYZ"
}
```

### Request Parameters

The table below describes the parameters of the request:

| Parameter | Location | Type | Description | Required |
| :- | :- | :- | :- | :- |
| `requestType` | basicInfo | Int32 | Defines the transaction type (e.g., 0 for Sale/Charge). | Yes |
| `entryMode` | basicInfo | Int32 | Defines how card data was obtained (e.g., 1 for E-commerce/MIT). | Yes |
| `amount` | basicInfo | Decimal | The monetary amount to be charged. | Yes |
| `currency` | basicInfo | String | The three-letter ISO currency code. | Yes |
| `countryCode` | basicInfo | String | Two-letter ISO country code of transaction origin. | Yes |
| `tokenModel` | basicInfo | Int32 | The specific tokenization scheme used. **Token Type Behavior**:  A token's type (subscription/COF/top-up) is set during its initial creation and stored in our system. If a subsequent [Charge Token](https://devzone.nayax.com/reference/ecom/payments/charge-token)   request includes a different token type parameter, it is ignored. The system always uses the original token type from the initialization request, regardless of what is provided in later charge requests. | Yes |
| `cvc` | basicInfo | String \| null | CVC/CVV (usually null for tokenized MIT). | Yes |
| `token` | basicInfo | String | **The unique token** representing the card to be charged. | Yes |
| `merchantRequestId` | basicInfo | String | Unique ID generated by the merchant for this request. | Yes |
| `isSaveTokenWithoutConsent` | basicInfo | Boolean | Flag for new token saving (usually false). | Yes |
| `machineId` | machineInfo | String | Unique identifier for the transaction machine/terminal. | Yes |
| `cardholderEmail` | cardHolderInfo | String | The customer's email address. | Yes |
| `cardHolderUniqId` | cardHolderInfo | String | A unique merchant ID for the cardholder. | Yes |
| `additionalData` | additionalInfo | String | Custom data as a JSON string (e.g., loyalty info). | No |
| `validationKey` | Root | String | Cryptographic key (HMAC) to authenticate the request. | Yes |

## Response

A successful validation returns a `200 OK` status and a body containing the validated merchant details:

```json theme={null}
{
  "status": {
    "verdict": "Approved",
    "code": 0,
    "statusMessage": "Payment processed successfully."
  },
  "basicInfo": {
    "amount": 25.5,
    "currency": "EUR",
    "merchantRequestId": "MERCHANT_MIT_001",
    "transactionId": "NAYAXTRANS98765",
    "transactionTimeUtc": "2025-08-28T10:30:00Z"
  },
  "paymentInfo": {
    "amount": 25.5,
    "currency": "EUR",
    "nayaxTokenId": "NAYAXTOK12345",
    "siteId": 1,
    "providerTransactionId": "PSP_TRANS_ABC",
    "decimalPlace": 2
  }
}
```

### Response Parameters

The table below describes the parameters of the response:

| Parameter | Location | Type | Description |
| :- | :- | :- | :- |
| `verdict` | status | String | **'Approved'** or **'Declined'**. The final decision. |
| `code` | status | Int32 | Response code: **0 for Approved**, otherwise the relevant decline code. |
| `statusMessage` | status | String | A descriptive message about the transaction outcome. |
| `amount` | basicInfo | Decimal | The transaction amount processed. |
| `currency` | basicInfo | String | The currency of the transaction. |
| `merchantRequestId` | basicInfo | String | The unique ID from the original request. |
| `transactionId` | basicInfo | String | The unique transaction ID assigned by the Nayax system. |
| `transactionTimeUtc` | basicInfo | DateTime | The UTC timestamp when the transaction was completed. |
| `nayaxTokenId` | paymentInfo | String | The token ID used for the charge. |
| `siteId` | paymentInfo | Int32 | The site ID associated with the payment. |
| `providerTransactionId` | paymentInfo | String | The unique ID assigned by the Payment Service Provider (PSP). |
| `decimalPlace` | paymentInfo | Int32 | The number of decimal places used for the currency/amount. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.