# Registrar operación

## Registrar Operación

<mark style="color:green;">`POST`</mark> `https://api.payvalida.com/cashout/v1/operation`

`URL Sandbox: https://api-test.payvalida.com/cashout/v1/`**`operation`**\
\
Registra una operación de cashout que permite la entrega de dinero al solicitante

#### Request Body

| Name                                          | Type   | Description                                                                                                                |
| --------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------- |
| merchant<mark style="color:red;">\*</mark>    | string | Identificación del comercio que realiza la operación, (30 caracteres).                                                     |
| checksum<mark style="color:red;">\*</mark>    | string | <p>SHA512(merchant+operation+amount+currency+<br>document+FIXED\_HASH) (512 caracteres).</p>                               |
| operation<mark style="color:red;">\*</mark>   | string | Identificador de la operación generada por el comercio. Debe ser identificador único, (40 caracteres).                     |
| amount<mark style="color:red;">\*</mark>      | number | <p>Valor de la operación, (20 caracteres)<br><br><strong>\*En Perú solo debe contener un digito decimal.</strong></p>      |
| currency<mark style="color:red;">\*</mark>    | string | Código ISO de la divisa de la operación, (3 caracteres)                                                                    |
| description<mark style="color:red;">\*</mark> | string | Descripción de la operación, (50 caracteres)                                                                               |
| document<mark style="color:red;">\*</mark>    | string | Número del documento de identidad del usuario final que realiza la operación, (20 caracteres)                              |
| otpLength                                     | number | <p>Longitud de la clave OTP<br>(default 4, 4 <= otpLength <=12) (entre 4 a 12 caracteres)</p>                              |
| expire                                        | string | <p>Fecha de expiración de la operación (YYYY-MM-DD)<br>default 30 días, (8 caracteres).</p>                                |
| transactionCost                               | number | Monto que el comercio cobrará al cliente por la operación (default 0) (10 caracteres).                                     |
| beneficiaryName                               | String | <p>Nombre de la persona que recibirá el dinero<br><br><strong>\*Obligatorio para retiros en Guatemala y Perú.</strong></p> |
| beneficiaryLastName                           | String | <p>Apellido de la persona que recibirá el dinero<br><br><strong>\*Obligatorio para retiros en Peru.</strong></p>           |
| beneficiaryDocumentType                       | String | <p>Tipo de documento en Perú (DNI,RUC,CE)<br><br><strong>\*Obligatorio para retiros en Perú.</strong></p>                  |
| email                                         | String | <p>Email de usuario.<br><br><strong>\*Obligatorio para retiros en Perú.</strong></p>                                       |
| cellphone                                     | String | <p>Numero de celular de usuario.<br><br><strong>\*Obligatorio para retiros en Perú.</strong></p>                           |

{% tabs %}
{% tab title="200 Retorna un json con esta estructura" %}

```
{  
   "code":"0000",
   “text”:”OK”,
   "data":{  
      "amount":"150000.0",
      “transactionCost”:”2000.0”,
      "currency":"COP”,
      "description":"Retiro de intereses al 15092019",
      "document":"1001007878",
      "otp":"*********",
      “operation”:”1452782”,
      “expire”:”2019-12-31”
      “payvalidaCode”:1234567890,
      “balance”:900234900,
   }
}
```

{% endtab %}

{% tab title="Ejemplo Request Perú" %}

```json
{
    "merchant": "kuanto_pe",
    "beneficiaryName": "jhon",
    "beneficiaryLastName": "doe",
    "beneficiaryDocumentType": "RUC",
    "operation": "test-globokas-105",
    "amount": 13.3,
    "currency": "PEN",
    "description": "description test globokas 105",
    "document": "48764951234",
    "cellphone": "987654321",
    "email": "test@test.com",
    "expire": "2024-04-28",
    "checksum": "2ad8a93af77184a42c735143db57fb443eaa2656d29e88d293e9448c75142b5442d91aed293c42ca6aa241ad65c1fd293ca1cb38c344c0f6e89580be07be4d5d"
}
```

{% endtab %}
{% endtabs %}

### Información de la respuesta

**code:** indica el código del resultado, “0000” indica resultado sin error, otro valor indica el código del error

**text:** contiene el mensaje referente al code enviado.

**data:** contiene los datos de la transacción (para resultados sin error)

* **amount:** valor de la transacción&#x20;
* **transactionCost:** indica el costo que asume el usuario por realizar la transacción
* **currency:** moneda en la que está registrada la operación de cashout
* **description:** descripción de la operación&#x20;
* **document:** número de documento de identidad
* **otp:** OTP generada para la operación (si se indica true,  en el parámetro SMS, este valor no se proporciona)
* **operation:** identificador de la operación, generado por el comercio
* **expire:** fecha de expiración de la operación
* **payvalidaCode:** identificador de la operación en Payvalida
* **balance:** monto disponible en la bolsa

**NOTA:** el parámetro *CURRENCY* solo admite moneda local (correspondiente al país de registro del comercio). Si se recibe un  currency diferente retornara un error.

Toda operación registrada, queda en estado **PENDIENTE.**<br>

{% hint style="warning" %}
El campo "expire" indica la fecha en la cual no se podrán realizar los retiros, es decir que para esa fecha las Redes de Desembolso no entregarán el dinero.
{% endhint %}
