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

# Tarjeta de crédito

Procesa pagos con tarjeta de crédito o débito directamente desde tu integración. Puedes cobrar con los datos de la tarjeta o usando un token generado previamente.

## Crear pago con tarjeta

**Método:** `POST` **Endpoint:** `/Api/v2/cobros/pago_tarjeta_ecomerce`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": "1.00",
  "save_card": false,
  "card": {
    "card_number": "4242424242424242",
    "sec_code": "791",
    "exp_month": "06",
    "exp_year": "31",
    "cardholder_name": "Juan Pérez"
  },
  "client": {
    "num_cel": "5555555555",
    "first_name": "Juan",
    "paternal_surname": "Pérez",
    "maternal_surname": "García",
    "concept": "Pago de servicio"
  }
}
```

**Descripción de los campos:**

| Campo                     | Tipo    | Requerido | Descripción                                                               |
| ------------------------- | ------- | --------- | ------------------------------------------------------------------------- |
| `amount`                  | string  | Sí        | Monto a cobrar                                                            |
| `save_card`               | boolean | No        | Indica si la tarjeta se tokeniza para cobros futuros. Por defecto `false` |
| `card.card_number`        | string  | Sí        | Número de tarjeta                                                         |
| `card.sec_code`           | string  | Sí        | Código de seguridad                                                       |
| `card.exp_month`          | string  | Sí        | Mes de expiración                                                         |
| `card.exp_year`           | string  | Sí        | Año de expiración                                                         |
| `card.cardholder_name`    | string  | Sí        | Nombre del titular de la tarjeta                                          |
| `client.num_cel`          | string  | No        | Teléfono del cliente                                                      |
| `client.first_name`       | string  | Sí        | Nombre del cliente                                                        |
| `client.paternal_surname` | string  | Sí        | Apellido paterno del cliente                                              |
| `client.maternal_surname` | string  | No        | Apellido materno del cliente                                              |
| `client.concept`          | string  | No        | Descripción del cobro                                                     |

<Note>
  El campo `token_card` aparece en la respuesta únicamente cuando `save_card` es `true`. Guarda ese valor para usarlo en cobros futuros sin que el cliente tenga que ingresar sus datos de tarjeta nuevamente.
</Note>

## Crear pago con token

Procesa un cobro usando un token generado previamente con `save_card: true`.

**Método:** `POST` **Endpoint:** `/Api/v2/cobros/pago_token_ecomerce`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": "1.00",
  "token_card": "VvKzS4Ay1Adp2-v4BczhkS2Q8EAktQFCRLrk5VCN2fU%3D"
}
```

**Descripción de los campos:**

| Campo        | Tipo   | Requerido | Descripción                                              |
| ------------ | ------ | --------- | -------------------------------------------------------- |
| `amount`     | string | Sí        | Monto a cobrar                                           |
| `token_card` | string | Sí        | Token obtenido al realizar un pago con `save_card: true` |

## Obtener transacciones

Consulta el historial de transacciones procesadas con tarjeta.

**Método:** `GET` **Endpoint:** `/Api/v2/transacciones/obtener_transacciones`

**Header requerido:** `Authorization: Bearer {token}`

<Note>
  Este endpoint tiene un límite de 120 peticiones por minuto. Consulta la sección Autenticación y seguridad para más información sobre rate limiting.
</Note>

## Cancelar transacción

Cancela una transacción procesada con tarjeta usando su `track_code`.

**Método:** `POST` **Endpoint:** `/Api/v2/cobros/void_tarjeta_ecomerce`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "track_code": "00000000"
}
```

**Descripción de los campos:**

| Campo        | Tipo   | Requerido | Descripción                                |
| ------------ | ------ | --------- | ------------------------------------------ |
| `track_code` | string | Sí        | Identificador de la transacción a cancelar |

## Obtener estatus de transacción

Consulta el estatus actual de una o varias transacciones.

**Método:** `POST` **Endpoint:** `/Api/v2/transacciones/obtener_estatus_transacciones`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "transactions": [
    "177931493769"
  ]
}
```

**Descripción de los campos:**

| Campo          | Tipo  | Requerido | Descripción                                           |
| -------------- | ----- | --------- | ----------------------------------------------------- |
| `transactions` | array | Sí        | Lista de identificadores de transacciones a consultar |

<Note>
  Puedes consultar el estatus de múltiples transacciones en una sola llamada enviando más de un identificador dentro del array `transactions`.
</Note>

## Banregio

Los siguientes endpoints aplican exclusivamente para transacciones procesadas a través de Banregio.

### Venta

**Método:** `POST` **Endpoint:** `/Api/v2/banregio/sale`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": 300,
  "card": "4456530000001096",
  "exp": "1224",
  "code": "123"
}
```

**Descripción de los campos:**

| Campo    | Tipo    | Requerido | Descripción                           |
| -------- | ------- | --------- | ------------------------------------- |
| `amount` | integer | Sí        | Monto a cobrar                        |
| `card`   | string  | Sí        | Número de tarjeta                     |
| `exp`    | string  | Sí        | Fecha de expiración en formato `MMYY` |
| `code`   | string  | Sí        | Código de seguridad                   |

### Venta en meses sin intereses

**Método:** `POST` **Endpoint:** `/Api/v2/banregio/sale-msi`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": 200,
  "card": "4456530000001096",
  "exp": "1224",
  "code": "123",
  "promo_diff": "00",
  "msi": "06",
  "plan_promo": "03"
}
```

**Descripción de los campos:**

| Campo        | Tipo    | Requerido | Descripción                            |
| ------------ | ------- | --------- | -------------------------------------- |
| `amount`     | integer | Sí        | Monto a cobrar                         |
| `card`       | string  | Sí        | Número de tarjeta                      |
| `exp`        | string  | Sí        | Fecha de expiración en formato `MMYY`  |
| `code`       | string  | Sí        | Código de seguridad                    |
| `promo_diff` | string  | Sí        | Código de diferimiento de la promoción |
| `msi`        | string  | Sí        | Número de meses sin intereses          |
| `plan_promo` | string  | Sí        | Código del plan de promoción           |

### Autenticación forzada

**Método:** `POST` **Endpoint:** `/Api/v2/banregio/force-auth`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "amount": 200,
  "card": "4456530000001096",
  "exp": "1224",
  "code": "123",
  "code_auth": "123456"
}
```

**Descripción de los campos:**

| Campo       | Tipo    | Requerido | Descripción                           |
| ----------- | ------- | --------- | ------------------------------------- |
| `amount`    | integer | Sí        | Monto a cobrar                        |
| `card`      | string  | Sí        | Número de tarjeta                     |
| `exp`       | string  | Sí        | Fecha de expiración en formato `MMYY` |
| `code`      | string  | Sí        | Código de seguridad                   |
| `code_auth` | string  | Sí        | Código de autorización previo         |

### Reverso

Revierte una transacción previamente procesada.

**Método:** `POST` **Endpoint:** `/Api/v2/banregio/reversal`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "reverse_cause": "02",
  "folio": "030223085521",
  "reference": "174668718447"
}
```

**Descripción de los campos:**

| Campo           | Tipo   | Requerido | Descripción                           |
| --------------- | ------ | --------- | ------------------------------------- |
| `reverse_cause` | string | Sí        | Código de causa del reverso           |
| `folio`         | string | Sí        | Folio de la transacción original      |
| `reference`     | string | Sí        | Referencia de la transacción original |

### Cancelación

**Método:** `POST` **Endpoint:** `/Api/v2/banregio/void`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "reference": "169909642133",
  "amount": 200
}
```

**Descripción de los campos:**

| Campo       | Tipo    | Requerido | Descripción                             |
| ----------- | ------- | --------- | --------------------------------------- |
| `reference` | string  | Sí        | Referencia de la transacción a cancelar |
| `amount`    | integer | Sí        | Monto de la transacción original        |

### Devolución forzada

**Método:** `POST` **Endpoint:** `/Api/v2/cobros/void_hard`

**Header requerido:** `Authorization: Bearer {token}`

**Ejemplo de request:**

```json theme={null}
{
  "medio_id": "K9SY1RQF",
  "subafiliation_id": "8923253",
  "subafiliation_name": "RENE",
  "amount": "15000",
  "reference": "298147138229"
}
```

**Descripción de los campos:**

| Campo              | Tipo   | Requerido | Descripción                     |
| ------------------ | ------ | --------- | ------------------------------- |
| `medio_id`         | string | Sí        | Identificador del medio de pago |
| `subafiliation_id` | string | Sí        |                                 |
