# Crear un pago

Este documento aplica a los siguientes países:
Brasil | Chile | México | Portugal | España | Uruguay
---|---|---|---|---|---|

Esta guía te muestra cómo procesar una transacción de pago completa en un solo paso mediante la API de Getnet Web Checkout. El flujo implica la captura directa del pago **sin** una autorización previa.

## Cómo funciona

Usa el pago en un solo paso cuando quieras capturar el pago directamente en un paso, **sin** una autorización previa. Características clave:

- **Captura en un solo paso** — la transacción se captura directamente; no hay un paso de autorización independiente.
- **Mismo payment intent** — creas el payment intent mediante el endpoint `POST /payment-intent`, el mismo que se usa para los demás métodos.
- **Requisitos de campos por región** — los campos obligatorios varían según el país (moneda, tipo de documento, código de país), y Uruguay requiere el objeto `additional_data` con las tasas de impuestos y el código de regulación regional para el cumplimiento de SEP.
- **Configuraciones opcionales** — puedes definir 3DS, las URLs de redirección (`success_url` / `error_url`) y la expiración del intent (`expires_at`) en la solicitud; cuando se proporcionan, las URLs de redirección anulan la configuración técnica del vendedor.

El flujo involucra al comprador, la página de Checkout y la API de Getnet WebCheckout:

![](https://static-devportal-ux.sensedia-eng.com/Pagonxt/production/documentations/flow-create-payment-wbc-1787834568660-owmqf8ns.png)

## Requisitos

Antes de seguir los pasos, necesitas:

* Configurar tu Web Checkout mediante [Portal](/es/web-checkout/first-steps-wbc/configuration-by-portal) o mediante [API](/es/web-checkout/first-steps-wbc/configration-by-api) (dependiendo de tu ubicación).
* Generar tu token siguiendo el documento de [Authentication](/es/web-checkout/first-steps-wbc/authentication-token-wbc).

## Proceso de pago en un solo paso

Esta sección te guía a través del proceso de creación de una transacción de pago en un solo paso con la API de Getnet Web Checkout. Aprenderás a capturar el pago directamente en un solo paso.

Endpoint|
---|
`POST /payment-intent`|

**Campos obligatorios**
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
|`payment.currency`| String | Código de moneda. | `BRL`|
|`payment.amount`| Integer | Importe de la compra en formato entero, donde los últimos 2 dígitos representan los céntimos. Para los países donde no aplican los céntimos, completa el importe con 2 ceros a la derecha. |`92500`|
| `product.quantity` | integer | Cantidad del producto. | `10`|
| `product.title` | string | Nombre del producto. | `Toy car`|
| `product.value` | integer | Valor del producto en formato entero, donde los últimos 2 dígitos representan los céntimos. | `1200`|
|`customer.customer_id`| String | Se recomienda usar el número de documento del cliente, solo letras y números, sin caracteres especiales, separadores ni espacios.| `12345678912`  |
|`customer.first_name`| String | Nombre del cliente.| `John`  |
|`customer.last_name`| String | Apellido del cliente.| `Doe Smith`  |
|`customer.name`| String | Nombre completo del cliente.| `John Doe Smith`  |
|`customer.email`| String | Dirección de correo electrónico del cliente.| `customer@email.com.br`  |
|`customer.document_type`| String | Tipo de documento usado para identificar al cliente. Consulta la tabla **Valores de los campos** para ver los valores aceptados. | `CPF`  |
|`customer.document_number`| String | Número de documento usado para identificar al cliente.| `12345678912`  |
|`customer.billing_address.street`| String | Nombre de una calle.| `Av. Brasil`  |
|`customer.billing_address.number`| String | Número que identifica la posición de un edificio en una calle.| `1000`  |
|`customer.billing_address.country`| String | Código de país. Consulta la tabla **Valores de los campos** para ver los valores aceptados.| `BR` |
|`customer.billing_address.postal_code`| String | Código postal.| `90230060`  |

**Campos condicionales (solo Uruguay)**
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
|`additional_data`| Object | Datos adicionales para regulaciones regionales y requisitos fiscales. Obligatorio para Uruguay. | --- |
|`additional_data.rates`| Array | Tasas de impuestos aplicadas a la transacción.| --- |
|`additional_data.rates.key`| String | (Solo Uruguay). Tipo de impuesto o tasa que se aplica. | `IVA`|
|`additional_data.rates.value`| Number | (Solo Uruguay). Importe del impuesto en formato entero (céntimos)| `123`|
|`additional_data.regional_regulation_code`| String | (Solo Uruguay). Código fiscal o regulatorio regional requerido por las autoridades locales. Se usa para los envíos a SEP en Uruguay. | `17934`|

**Campos opcionales**
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
|`configurations`| Object | Configuraciones adicionales para el payment intent | --- |
|`configurations.3ds`| Boolean | Controla la autenticación 3D Secure. | `true` o `false`|
|`configurations.preauthorization`| Boolean | Indica si el pago es una preautorización. | `true` o `false`|
|`configurations.card_verification`| Boolean | Indica si se trata de un flujo de verificación de tarjeta. | `true` o `false`|
|`configurations.success_url`| String | URL de redirección en caso de pago exitoso. |`https://www.mystore.com/checkout/success`|
|`configurations.error_url`| String | URL de redirección en caso de error durante el pago. |`https://www.mystore.com/checkout/error`|
|`expires_at`| String | Expiración del payment intent. | `3d4h15m`|

**Valores de los campos**
| Campo         | Argentina |       Brasil                | Chile | Portugal |      España              | México | Uruguay         |
|:-------------:|:---------:|:---------------------------:|:-----:|:--------:|:--------------------------:|:------:|:---------------:|
|`currency`     |   `ARS`   |               `BRL`         | `CLP` |  `EUR`   | `EUR`                     |  `MXN` | `UYU` o  `USD` |
|`document_type`|   `DNI`   | `CPF`, `CNPJ` o `passport` | `RUT` |          |`DNI`, `INE` o `passport` |  `RFC` |     `uyci`      |
|`country`      |    `AR`   |             `BR`            |  `CH` |   `PT`   |             `ES`           |  `MX`  |      `UY`       |
|`key`          |    -      |             -               |   -   |    -     |             -              |    -   |       `IVA`     |

#### Reglas para completar los campos:

* El campo `expires_at` acepta un valor de duración (por ejemplo, 15m, 2h, 7d o 1d12h30m). Esta duración se aplica sin importar la zona horaria del merchant. La marca de tiempo de expiración que devuelve la API siempre tiene formato GMT+0 (UTC). Si **no se proporciona ningún valor**, el payment intent **no expira**.
* Cuando se proporcionan `success_url` y `error_url` en la solicitud del payment intent, estos anulan el valor configurado en la configuración técnica del vendedor.
* **Uruguay**: los vendedores pueden crear payment intents en UYU (peso uruguayo) o en USD. Al pagar en UYU, el objeto `additional_data` es obligatorio y debe incluir `additional_data.rates.key` con la clave de tasa **IVA** y el `regional_regulation_code` para el cumplimiento de SEP.
* **Argentina**: `card_verification` y `preauthorization` **no están disponibles** para Argentina.

#### Ejemplo de solicitud:

```json
{
  "mode": "instant",
  "order_id": "ORDER_UY_97531",
  "configurations": {
    "3ds": true,
    "preauthorization": false,
    "card_verification": false,
    "success_url": "https://www.mystore.com/checkout/success",
    "error_url": "https://www.mystore.com/checkout/error"
  },
  "payment": {
    "currency": "UYU",
    "amount": 120000
  },
  "product": [
    {
      "product_type": "service",
      "title": "Curso de inglés online",
      "description": "Curso completo de 6 meses",
      "value": 120000,
      "quantity": 1
    }
  ],
  "customer": {
    "customer_id": "12345678912",
    "first_name": "Laura",
    "last_name": "Fernández Rodríguez",
    "name": "Laura Fernández Rodríguez",
    "email": "laura.fernandez@example.com.uy",
    "document_type": "ci",
    "document_number": "45678912",
    "phone_number": "59899123456",
    "gender": "Female",
    "checked_email": true,
    "billing_address": {
      "street": "Av. 18 de Julio",
      "number": "1234",
      "complement": "Apto 601",
      "district": "Centro",
      "city": "Montevideo",
      "state": "Montevideo",
      "country": "UY",
      "postal_code": "11200",
      "reference": "Entre Río Branco y Convención"
    }
  },
  "shipping": {
    "first_name": "Laura",
    "last_name": "Fernández Rodríguez",
    "name": "Laura Fernández Rodríguez",
    "phone_number": "59899123456",
    "shipping_amount": 0,
    "address": {
      "street": "Av. 18 de Julio",
      "number": "1234",
      "complement": "Apto 601",
      "district": "Centro",
      "city": "Montevideo",
      "state": "Montevideo",
      "country": "UY",
      "postal_code": "11200",
      "reference": "Entre Río Branco y Convención"
    }
  },
  "pickup_store": false,
  "shipping_method": "UES",
  "soft_descriptor": "Tienda UY",
  "additional_data": {
    "rates": [
      {
        "key": "IVA",
        "value": 22
      }
    ],
    "regional_regulation_code": ["17934"]
  },
  "expires_at": "1h"
}
```

#### Ejemplo de respuesta 200

```json
{
  "payment_intent_id": "ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe"
}
```

## Próximos pasos

Ahora que creaste correctamente un pago en un solo paso, puedes explorar más pagos de la API de Getnet Web Checkout:

* Aprende cómo [crear un pago con preautorización](/es/web-checkout/payment-guides-wbc/payment-preauth-wbc).
* Aprende cómo [crear un pago con verificación de tarjeta](/es/web-checkout/payment-guides-wbc/payment-cardverif-wbc).
* Aprende cómo [crear un pago con 3DS](/es/web-checkout/payment-guides-wbc/payment-3ds-wbc).