# Endpoint Creación

## Endpoint Creación

<mark style="color:green;">`POST`</mark> `https://api-stg.tupayonline.com/v3/deposits`

#### Headers

| Name                                      | Type   | Description                                                                             |
| ----------------------------------------- | ------ | --------------------------------------------------------------------------------------- |
| Content-Type                              | string | `application/json`                                                                      |
| X-Date<mark style="color:red;">\*</mark>  | string | <p>Fecha según el estándar ISO8601 formato: <br><code>yyyy-MM-dd'T'HH:mm:ssZ</code></p> |
| X-Login<mark style="color:red;">\*</mark> | string | X-Login API Key del Comercio                                                            |
| Authorization                             | string | Hash de control de autorización                                                         |
| X-Idempotency-Key                         | string | Idempotency key única                                                                   |

#### Request Body

| Name                                                 | Type    | Description                                                                                                                                                                                                                                                        |
| ---------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| country<mark style="color:red;">\*</mark>            | string  | <p><strong>(PE)</strong></p><p>País del depósito </p>                                                                                                                                                                                                              |
| currency<mark style="color:red;">\*</mark>           | string  | <p><strong>(PEN / USD)</strong></p><p>Tipo de Moneda</p>                                                                                                                                                                                                           |
| amount<mark style="color:red;">\*</mark>             | number  | Monto de depósito                                                                                                                                                                                                                                                  |
| request\_payer\_data\_on\_validation\_failure        | boolean | <p>(default:false)</p><p>Marca utilizada para especificar si desea ignorar error por <code>phone</code>, <code>zip\_code</code> y/o <code>state</code> inválidos.</p>                                                                                              |
| client\_ip                                           | string  | Dirección IPv4/v6 válida del cliente                                                                                                                                                                                                                               |
| device\_id                                           | string  | <p>(max length: 100)</p><p>Identificador  único del  cliente</p>                                                                                                                                                                                                   |
| back\_url                                            | string  | HTTPS URL válida usada para redireccionar al usuario.                                                                                                                                                                                                              |
| success\_url<mark style="color:red;">\*</mark>       | string  | HTTPS URL usada para redireccionar al cliente en caso de completarse el depósito                                                                                                                                                                                   |
| error\_url                                           | string  | HTTPS URL válida usada para redireccionar al cliente en caso de que ocurra un error a la hora de generar el pago                                                                                                                                                   |
| payment\_method<mark style="color:red;">\*</mark>    | string  | Debe ser enviado  con el valor XA/XAQR[ <mark style="color:orange;">**(Método de Pago)**</mark>](#metodos-de-pago)                                                                                                                                                 |
| notification\_url<mark style="color:red;">\*</mark>  | string  | HTTPS URL válida usada para enviar notificaciones sobre los cambios de estado del depósito                                                                                                                                                                         |
| test                                                 | boolean | Etiqueta para indicar que es un depósito de prueba. Si es enviado como `true`, no afectará el balance del comercio.                                                                                                                                                |
| mobile                                               | boolean | <p>(default: false)</p><p>La marca mobile es un booleano y tiene que ser enviado con el valor <code>true</code> si el cliente genera el deposito desde un dispositivo móvil. Si no es enviado el valor por default es <code>false</code>.</p>                      |
| payer{}<mark style="color:red;">\*</mark>            | object  | Objeto que contiene los detalles del pagador.                                                                                                                                                                                                                      |
| prayer.first\_name<mark style="color:red;">\*</mark> | string  | <p>(max length: 50)</p><p>Nombre del cliente.</p>                                                                                                                                                                                                                  |
| prayer.last\_name<mark style="color:red;">\*</mark>  | string  | <p>(max length: 50)</p><p>Apellido del cliente.</p>                                                                                                                                                                                                                |
| prayer.phone                                         | string  | <p>string (max length: 32)</p><p>Número de teléfono válido del cliente.</p>                                                                                                                                                                                        |
| prayer.document<mark style="color:red;">\*</mark>    | string  | <p> (max length: 30)</p><p>Asegúrese de que sea correcto y que el usuario no pueda cambiarlo cada vez que desea generar un nuevo depósito.</p>                                                                                                                     |
| prayer.email<mark style="color:red;">\*</mark>       | string  | <p> (max length: 255)</p><p>Dirección de email válida del cliente.</p>                                                                                                                                                                                             |
| prayer.document\_type                                | string  | <p> (max length: 10)</p><p>Tipo de documento del cliente. Opcional, en caso de enviar debe ser un valor válido.<a href="#validacion-de-tipo-de-documento-de-identidad"> <mark style="color:blue;"><strong>(Tipo de documento de identidad)</strong></mark></a></p> |
| prayer.address{}                                     | object  | Objeto conteniendo detalles de la dirección.                                                                                                                                                                                                                       |
| prayer.address.zip\_code                             | string  | <p>(max length: 16)</p><p>Código postal del cliente.</p>                                                                                                                                                                                                           |
| prayer.address.city                                  | string  | <p>(max length: 128)</p><p>Ciudad del cliente.</p>                                                                                                                                                                                                                 |
| prayer.address.street                                | string  | <p>(max length: 255)</p><p>Calle del cliente.</p>                                                                                                                                                                                                                  |
| fee\_on\_payer                                       | boolean | <p>(default: false)</p><p>Elija si la tarifa del depósito será pagada por el cliente o debitada de su saldo</p>                                                                                                                                                    |
| invoice\_id<mark style="color:red;">\*</mark>        | string  | <p>(max length: 128) </p><p>(random:  ^\[A-Za-z0-9-\_]\*$ )</p><p>ID de depósito único por parte del merchant.</p>                                                                                                                                                 |
| expiration                                           | number  | Tiempo de expiracion de la transaccion                                                                                                                                                                                                                             |
| description                                          | string  | Descripcion del deposit                                                                                                                                                                                                                                            |

{% tabs %}
{% tab title="201 Solicitud de depósito creada exitosamente" %}
{% code overflow="wrap" fullWidth="false" %}

```json
{
    "checkout_type": "ONE_SHOT",
    "redirect_url": "https://payment-stg.tupayonline.com/v1/checkout/eyJhbGciOiJIUzM4NCJ9.eyJqdGkiOiI1NjkzMDY5MSIsImlhdCI6MTcwNzg3ODk1MCwiZXhwIjoxNzA5MTc0OTUwLCJsYW5ndWFnZSI6ImVzIn0.gR5a1bIzgiZ8kUGK5MCFaLmuf_yPzr0tMZs4RCgfEsn6_qYXT7IIWmfAcz3uR3_V/PE/XA/3041/47591",
    "iframe": true,
    "deposit_id": 301178390,
    "merchant_invoice_id": "19574-7770615745349746664",
    "payment_info": {
        "type": "MULTIGATEWAY",
        "payment_method": "XA",
        "payment_method_name": "Tupay",
        "amount": 10.00,
        "currency": "PEN",
        "expiration_date": "2026-05-27 10:49:10",
        "created_at": "2024-02-14 02:49:10",
        "metadata": {
            "reference": 56930691,
            "beneficiary_name": "TUPAY",
            "payment_method_code": "XA"
        },
        "multigateway_metadata": [
            {
                "beneficiaryName": "Tupay",
                "agreement": "A-659374",
                "reference": "56930691",
                "paymentMethodCode": "BC",
                "payerName": "Nombre Apellido",
                "paymentMethodName": "Tupay",
                "paymentMethodType": "BANK_TRANSFER"
            },
            {
                "beneficiaryName": "Tupay",
                "agreement": "A-659374",
                "reference": "56930691",
                "paymentMethodCode": "BP",
                "payerName": "Nombre Apellido",
                "paymentMethodName": "Tupay",
                "paymentMethodType": "BANK_TRANSFER"
            },
            {
                "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAAFeAQAAAADlUEq3AAAFXUlEQVR42u1bQa6jSgx0xIIlR+Am4WJIROJi5CZ9hCxZIDyuqm6SjPSlv5iNZ14W6OWliITbbZerK+b//3XYD/jfAr/M7PaaR7wbzYaH+dN",
                "subType": "VOUCHER",
                "reference": "56930691",
                "paymentMethodCode": "NQR",
                "paymentMethodName": "TEST",
                "paymentMethodType": "QR_CODE"
            },
            {
                "paymentMethodType": "CREDIT_CARD",
                "redirectUrl": "https://pay-stg.tupayonline.com/validate/bbf7WD95WlaTOrgYqxB2OdBpstWQyq1y",
                "paymentMethodCode": "VI"
            },
            {
                "paymentMethodType": "CREDIT_CARD",
                "redirectUrl": "https://pay-stg.tupayonline.com/validate/Ng58VMecAM3BF5R3K8vJ5jQVH9HRoZKu",
                "paymentMethodCode": "MC"
            }
        ]
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="401: Unauthorized Invalid signature" %}

```json
{
    "code": 102,
    "description": "Invalid signature",
    "type": "INVALID_SIGNATURE"
}
```

{% endtab %}

{% tab title="400: Bad Request La solictud de deposito fallo" %}

```javascript
{
    "code": 201,
    "description": "Field validation error. Check details",
    "details": [
        "payer.document: Invalid document type and/or document"
    ],
    "type": "BEAN_VALIDATION_ERROR"
}
```

{% endtab %}
{% endtabs %}

{% hint style="success" %}
Los parámetros del body que se encuentren con marcas \*  son campos obligatorios.
{% endhint %}

## <mark style="color:blue;">Consideraciones de la Respuesta</mark>

{% tabs %}
{% tab title="checkout\_type" %}

| ONE\_SHOT                                                                                                                                                                                        | HOSTED                                                                                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| La creación del depósito fue completada con éxito a partir de su petición, y el usuario verá directamente la información para completar el pago.                                                 | La información enviada no es suficiente para crear el depósito, y los datos faltantes deben ser pedidos al usuario. Redirija al usuario a nuestro Hosted Checkout para que solicitemos la información en cuestión. |
| Debajo encontrarás los campos requeridos con un Checkbox ![](https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/B6N9Nkd3HQN51WkC7Ec5/Screen%20Shot%202022-11-17%20at%2016.26.49.png) | <p>Si faltan datos para crear el pago, el flujo <code>HOSTED</code> se hará presente <span data-gb-custom-inline data-tag="emoji" data-code="1f44d">👍</span><br></p>                                              |

{% endtab %}

{% tab title="Iframe" %}
Nuestra etiqueta redirect\_url maneja iframe por lo tanto no es necesario direccionar a otra pestaña ya que se puede manejar en la misma vista.

```html
<!DOCTYPE html>
<html>
<head>
    <title>Iframe test</title>
</head>
<body>
    <iframe src=" https://payin.checkoutogate.com/validate/eyJhbGciOiJI
    UzM4NCJ9.eyJqdGkiOiI4NzY1ODgwODYiLCJpYXQiOjE3MDIzMDExODUsImV
    4cCI6MTcwNDg5MzE4NXfjh0.xUOFVMwKFXDFGHfROxTnG9znuI2MI4G6tRVjbso4y1
    PsREiEYL8WSCJ1HEEbi4fsr0Qsde435sdH" 
            width="1200" 
            height="800" 
            frameborder="0" 
            hspace="0"
            width: 100%>
    </iframe>
</body>
</html>
```

{% endtab %}
{% endtabs %}

## <mark style="color:blue;">Request de Ejemplo</mark>

{% code overflow="wrap" %}

```json
{
	"country": "PE",
	"currency": "PEN",
	"amount": "100",
	"payment_method": "XA",
	"payer": 
	{
		"email": "client@tupaypagos.com",
		"document": "74586930",
		"document_type": "DNI",
		"last_name": "Gaming last name",
		"first_name": "Gaming",
		"phone":"987654321"

	 },
	"expiration": 10,
	"invoice_id": "ID-12394594",
	 "success_url": "https://tupay.2024/admin/page/tupay/pending",
	 "back_url": "https://tupay.2024/admin/page/tupay/pending",
	 "error_url": "https://tupay.2024/admin/page/tupay/fail",
	 "notification_url": "https://47e2a34561/fy/tupay"
}
```

{% endcode %}

{% tabs %}
{% tab title="Java" %}

```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"country\": \"PE\",\n\t\"currency\": \"PEN\",\n\t\"amount\": \"100\",\n\t\"payment_method\": \"XA\",\n\t\"invoice_id\": \"65b87bb498fd3002a270a7b3\",\n\t\"payer\": \n\t{\n\t\t\"email\": \"client@tupaypagos.com\",\n\t\t\"document\": \"74586930\",\n\t\t\"document_type\": \"DNI\",\n\t\t\"last_name\": \"Gaming last name\",\n\t\t\"first_name\": \"Gaming\",\n\t\t\"address\":{\n\t\t\t\"street\":\"Calle 13\",\n\t\t\t\"city\":\"Peru\",\n\t\t\t\"zip_code\":\"12345\"\n\t\t\t}\n\t },\n\t \"success_url\": \"https://tupay.2024/admin/page/tupay/pending\",\n\t \"back_url\": \"https://tupay.2024/admin/page/tupay/pending\",\n\t \"error_url\": \"https://tupay.2024/admin/page/tupay/fail\",\n\t \"notification_url\": \"https://47e2a34561/fy/tupay\",\n\t \"client_ip\":\"1.147.73.157\",\n\t \"expiration\": 100,\n\t \"fee_on_payer\":\"false\",\n\t \"device_id\":\"\",\n\t \"test\":\"true\",\n\t \"mobile\":\"false\",\n\t \"request_payer_data_on_validation_failure\":\"false\"\n}");
Request request = new Request.Builder()
  .url("https://api-stg.tupayonline.com/v3/deposits")
  .method("POST", body)
  .addHeader("X-Login", "zkSSILAezeTUyIkPxQvS")
  .addHeader("X-Date", "2024-02-19T15:12:54Z")
  .addHeader("Authorization", "D24 210645f9b657ae1d342e4e8e5e8ca3c57e8ce3d067fd512f01d1e826488a593b")
  .addHeader("Content-Type", "application/json")
  .addHeader("Cookie", "GCLB=CJ3O2uri78nfAQ")
  .build();
Response response = client.newCall(request).execute();
```

{% endtab %}

{% tab title="Javascript" %}

```javascript
const myHeaders = new Headers();
myHeaders.append("X-Login", "zkSSILAezeTUyIkPxQvS");
myHeaders.append("X-Date", "2024-02-19T15:12:54Z");
myHeaders.append("Authorization", "D24 210645f9b657ae1d342e4e8e5e8ca3c57e8ce3d067fd512f01d1e826488a593b");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Cookie", "GCLB=CJ3O2uri78nfAQ");

const raw = JSON.stringify({
  "country": "PE",
  "currency": "PEN",
  "amount": "100",
  "payment_method": "XA",
  "invoice_id": "65b87bb498fd3002a270a7b3",
  "payer": {
    "email": "client@tupaypagos.com",
    "document": "74586930",
    "document_type": "DNI",
    "last_name": "Gaming last name",
    "first_name": "Gaming",
    "address": {
      "street": "Calle 13",
      "city": "Peru",
      "zip_code": "12345"
    }
  },
  "success_url": "https://tupay.2024/admin/page/tupay/pending",
  "back_url": "https://tupay.2024/admin/page/tupay/pending",
  "error_url": "https://tupay.2024/admin/page/tupay/fail",
  "notification_url": "https://47e2a34561/fy/tupay",
  "client_ip": "1.147.73.157",
  "expiration": 100,
  "fee_on_payer": "false",
  "device_id": "",
  "test": "true",
  "mobile": "false",
  "request_payer_data_on_validation_failure": "false"
});

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: raw,
  redirect: "follow"
};

fetch("https://api-stg.tupayonline.com/v3/deposits", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));
```

{% endtab %}

{% tab title="C#" %}

```csharp
var options = new RestClientOptions("https://api-stg.tupayonline.com")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/v3/deposits", Method.Post);
request.AddHeader("X-Login", "zkSSILAezeTUyIkPxQvS");
request.AddHeader("X-Date", "2024-02-19T15:12:54Z");
request.AddHeader("Authorization", "D24 210645f9b657ae1d342e4e8e5e8ca3c57e8ce3d067fd512f01d1e826488a593b");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Cookie", "GCLB=CJ3O2uri78nfAQ");
var body = @"{" + "\n" +
@"	""country"": ""PE""," + "\n" +
@"	""currency"": ""PEN""," + "\n" +
@"	""amount"": ""100""," + "\n" +
@"	""payment_method"": ""XA""," + "\n" +
@"	""invoice_id"": ""65b87bb498fd3002a270a7b3""," + "\n" +
@"	""payer"": " + "\n" +
@"	{" + "\n" +
@"		""email"": ""client@tupaypagos.com""," + "\n" +
@"		""document"": ""74586930""," + "\n" +
@"		""document_type"": ""DNI""," + "\n" +
@"		""last_name"": ""Gaming last name""," + "\n" +
@"		""first_name"": ""Gaming""," + "\n" +
@"		""address"":{" + "\n" +
@"			""street"":""Calle 13""," + "\n" +
@"			""city"":""Peru""," + "\n" +
@"			""zip_code"":""12345""" + "\n" +
@"			}" + "\n" +
@"	 }," + "\n" +
@"	 ""success_url"": ""https://tupay.2024/admin/page/tupay/pending""," + "\n" +
@"	 ""back_url"": ""https://tupay.2024/admin/page/tupay/pending""," + "\n" +
@"	 ""error_url"": ""https://tupay.2024/admin/page/tupay/fail""," + "\n" +
@"	 ""notification_url"": ""https://47e2a34561/fy/tupay""," + "\n" +
@"	 ""client_ip"":""1.147.73.157""," + "\n" +
@"	 ""expiration"": 100," + "\n" +
@"	 ""fee_on_payer"":""false""," + "\n" +
@"	 ""device_id"":""""," + "\n" +
@"	 ""test"":""true""," + "\n" +
@"	 ""mobile"":""false""," + "\n" +
@"	 ""request_payer_data_on_validation_failure"":""false""" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api-stg.tupayonline.com/v3/deposits',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
	"country": "PE",
	"currency": "PEN",
	"amount": "100",
	"payment_method": "XA",
	"invoice_id": "65b87bb498fd3002a270a7b3",
	"payer": 
	{
		"email": "client@tupaypagos.com",
		"document": "74586930",
		"document_type": "DNI",
		"last_name": "Gaming last name",
		"first_name": "Gaming",
		"address":{
			"street":"Calle 13",
			"city":"Peru",
			"zip_code":"12345"
			}
	 },
	 "success_url": "https://tupay.2024/admin/page/tupay/pending",
	 "back_url": "https://tupay.2024/admin/page/tupay/pending",
	 "error_url": "https://tupay.2024/admin/page/tupay/fail",
	 "notification_url": "https://47e2a34561/fy/tupay",
	 "client_ip":"1.147.73.157",
	 "expiration": 100,
	 "fee_on_payer":"false",
	 "device_id":"",
	 "test":"true",
	 "mobile":"false",
	 "request_payer_data_on_validation_failure":"false"
}',
  CURLOPT_HTTPHEADER => array(
    'X-Login: zkSSILAezeTUyIkPxQvS',
    'X-Date: 2024-02-19T15:12:54Z',
    'Authorization: D24 210645f9b657ae1d342e4e8e5e8ca3c57e8ce3d067fd512f01d1e826488a593b',
    'Content-Type: application/json',
    'Cookie: GCLB=CJ3O2uri78nfAQ'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
```

{% endtab %}
{% endtabs %}

## <mark style="color:orange;">Métodos de Pago</mark>

Dentro de la API de Tupay, será posible encontrar distintos métodos de pago, representados por distintos códigos de <mark style="color:orange;">**payment\_method**</mark>, estos son utilizados para filtrar exactamente que métodos de pago quieren mostrarle al cliente final . <mark style="color:orange;">**"payment\_method":"XAQR" / "payment\_method":"XA"**</mark>

<table><thead><tr><th width="99">Logo</th><th width="101">Valor</th><th>Descripción</th></tr></thead><tbody><tr><td><img src="https://2298703647-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjMKy3VezYlJlCCcjySW%2Fuploads%2FfNzOudYlo0ybvOeekL6j%2Fimage.png?alt=media&#x26;token=f6999ded-c10f-482d-9522-ba95583e5ed5" alt="" data-size="original"></td><td>XA</td><td>El método de pago "XA" representa todos los metodos de pago de Tupay,al utilizar este codigo, el cliente sera ofrecido con todas las opciones que ofrecemos para realizar el pago final</td></tr><tr><td><img src="https://2298703647-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjMKy3VezYlJlCCcjySW%2Fuploads%2F6RQSqj0ZsEZfen9lRt0Y%2Fimage.png?alt=media&#x26;token=1afdf0dd-96c4-4379-ae3c-670f1b3d764a" alt="" data-size="original"></td><td>XAQR</td><td>Al utilizar este codigo, el cliente final sera presentado con todas las opciones que ofrecen un QR para escanear y realizar el pago final, esto es representado en el request como</td></tr><tr><td><img src="https://docs.d24.com/~gitbook/image?url=https%3A%2F%2F773174111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M792I7hN0PzC-Sx95CP-887967055%252Fuploads%252FMpGbIl799u5X9EMGHstk%252Fimage.png%3Falt%3Dmedia%26token%3D9ff579a2-6137-4ef2-80ea-0c9f44b90f20&#x26;width=40&#x26;dpr=4&#x26;quality=100&#x26;sign=1f0d4148&#x26;sv=1" alt="" data-size="original"></td><td>XABT</td><td>El método de pago "XABT" ofrece al usuario final el codigo de pago para utilizar en todas las entidades bancarias y agentes.</td></tr><tr><td><img src="https://docs.d24.com/~gitbook/image?url=https%3A%2F%2F773174111-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M792I7hN0PzC-Sx95CP-887967055%252Fuploads%252FUMgbWA9VFs5ZRfpQCkJH%252Fimage.png%3Falt%3Dmedia%26token%3D82d6951d-7363-4324-bc85-5f51a08edc17&#x26;width=40&#x26;dpr=4&#x26;quality=100&#x26;sign=6c70bc62&#x26;sv=1" alt="" data-size="original"></td><td>XACC</td><td>Al utilizar este codigo, el usuario final podrá realizar su pago con tarjeta visa y mastercard.</td></tr><tr><td><div><figure><img src="https://2298703647-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjMKy3VezYlJlCCcjySW%2Fuploads%2FIEJaDtWGJdbZbGZPMarZ%2FYape-Tupay_600x600-dark.svg?alt=media&#x26;token=2f13e54e-fd2b-4273-846b-47cbc51071eb" alt=""><figcaption></figcaption></figure></div></td><td>XAYP</td><td>El método de pago "XAYP" ofrece al usuario final pagar con el código de aprobación de su billetera Yape.</td></tr></tbody></table>

<div><figure><img src="https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/WVea6tHAZ1hZuSz5t2Sq/Tupay_PurpleBackground.svg" alt=""><figcaption></figcaption></figure> <figure><img src="https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/m6tE4btKckDRdMl573Bw/Tupay_WhiteBackground.svg" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/o61ZztjLLdHIWtgKLKLx/Icon_Purple.svg" alt=""><figcaption></figcaption></figure> <figure><img src="https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/erU8HRwKmPkasG2uDfTv/Icon_White.svg" alt=""><figcaption></figcaption></figure></div>

<div><figure><img src="https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/G4v04RF8Oc3h6AUqbLgT/QRbytupay-1.svg" alt="" width="150"><figcaption></figcaption></figure> <figure><img src="https://content.gitbook.com/content/GjMKy3VezYlJlCCcjySW/blobs/zx0XXofHLDgHqYgbwPoY/QRbytupay.svg" alt="" width="188"><figcaption></figcaption></figure></div>

<div><figure><img src="https://2298703647-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjMKy3VezYlJlCCcjySW%2Fuploads%2FbT9jwwpwdIQtd1UmcCnn%2FTupay%20Boton.svg?alt=media&#x26;token=09f99d1e-c801-425b-b62d-d08f313367a2" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="https://2298703647-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjMKy3VezYlJlCCcjySW%2Fuploads%2F6qB4WM2OZfBjlaRZCu2z%2FTUPAY%20BOTON.svg?alt=media&#x26;token=302327ad-087a-4634-84db-5e85a15e6b1b" alt="" width="188"><figcaption></figcaption></figure></div>

<figure><img src="https://2298703647-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGjMKy3VezYlJlCCcjySW%2Fuploads%2FijuoaPOdtx38NQ9HdG1D%2FYape-Tupay_600x600-dark.svg?alt=media&#x26;token=93786cd6-4f8c-408d-a033-82db5d3bc91d" alt="" width="150"><figcaption></figcaption></figure>

{% hint style="success" %}
[<mark style="color:green;">DESCARGAR LOGOS DEL CAJERO</mark>](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBX23ycHzSAEGxcWuNtu6%2Fuploads%2FyC9YtjcSYi0oRaOY0uKB%2FTupay%20Brand%20-%20Spanish.pdf?alt=media\&token=9d05c2ea-a5ea-417a-8049-a4b04387b8b5)
{% endhint %}

## <mark style="color:blue;">Validación de Tipo de Documento de Identidad</mark>

Dentro de la API de Tupay, será posible encontrar distintos tipo de documento de identidad, para ello se tiene una validación por la cantidad de dígitos. [<mark style="color:blue;">**"document\_type":"DNI"**</mark>](#user-content-fn-1)[^1] <mark style="color:blue;">**,"**</mark><mark style="color:blue;">**`document`**</mark><mark style="color:blue;">**":"86970864"**</mark>

<table><thead><tr><th width="353">document_type (valores)</th><th>document (Longitud de caracteres)</th></tr></thead><tbody><tr><td>PASS</td><td>Min 9 Max 12 dígitos Alfanumerico</td></tr><tr><td>RUC</td><td>Numérico 11 dígitos</td></tr><tr><td>CE</td><td>Min 9 Max 12 dígitos Alfanumerico</td></tr><tr><td>DNI</td><td>Numérico 8 dígitos</td></tr></tbody></table>

## <mark style="color:green;">**Códigos de Errores**</mark>

Agrupamos los códigos de error en diferentes categorías para un mejor entendimiento.

* `1xx` - Errores de encabezado
* `2xx` - Error en la llamada o de configuración del comercio
* `3xx` - Errores del usuario
* `4xx` - Errores en la creación del depósito
* `5xx` - Otros errores
* `7xx` -  Errores internos

<table><thead><tr><th width="104">Código</th><th width="139">Código HTTP</th><th width="185">Tipo</th><th width="275">Mensaje</th><th width="350">Descripción</th></tr></thead><tbody><tr><td>100</td><td>401</td><td><code>INVALID_CREDENTIALS</code></td><td>Invalid Credentials</td><td>El <code>X-Login</code> enviado es incorrecto o no está activo aún.</td></tr><tr><td>101</td><td>400</td><td><code>MISSING_REQUIRED_HEADER</code></td><td>Missing or invalid format for required header {headerName}</td><td>Asegúrese de que todos los <a href="../aspectos-tecnicos#encabezados">encabezados</a> sean correctos.​</td></tr><tr><td>102</td><td>400</td><td><code>INVALID_SIGNATURE</code></td><td>Invalid signature</td><td>Invalid <code>Authorization</code> signature. <a href="https://docs.tupayonline.com/v/english/api-documentation/api-codes">Click here for instructions</a><br>Firma de <code>Authorization</code> inválida​. Revise <a href="autorizacion-y-calculo-de-signature">aquí</a>.</td></tr><tr><td>103</td><td>400</td><td><code>INVALID_DATE_RANGE</code></td><td>X-Date header value out of valid range</td><td>The <code>X-Date</code> value you sent in the header is outside the allowed time-frame. <a href="https://docs.tupayonline.com/v/english/api-documentation/api-codes">Click here for details</a><br>El valor <code>X-Date</code> ​enviado en el encabezado está por fuera del marco temporal permitido. Revise <a href="../aspectos-tecnicos#x-date">aquí</a>.</td></tr><tr><td>104</td><td>400</td><td><code>IDEMPOTENCY_KEY_ALREADY_USED</code></td><td>Idempotency key {key} has been already used</td><td>La <code>X-Idempotency-Key</code> enviada ya ha sido usada.</td></tr><tr><td>105</td><td>400</td><td><code>EMPTY_HEADER_VALUE</code></td><td>Optional header {headerName} must not be blank</td><td>Si un encabezado opcional es enviado, puede venir vacío.</td></tr><tr><td>201</td><td>400</td><td><code>BEAN_VALIDATION_ERROR</code></td><td>Field validation error. Check details</td><td>Uno o más campos son incorrectos.</td></tr><tr><td>202</td><td>401</td><td><code>INVALID_IP</code></td><td>Unregistered IP address</td><td>Debes whitelistear la dirección IP. Revise <a href="../aspectos-tecnicos#ip-whitelisting">aquí</a>.​</td></tr><tr><td>203</td><td>429</td><td><code>VELOCITY_CHECK</code></td><td>Too many consecutive attempts for user (Velocity Check)</td><td>El usuario ha creado muchos depósitos en un corto periodo de tiempo.</td></tr><tr><td>204</td><td>400</td><td><code>INVALID_MEDIA_TYPE</code></td><td>Invalid media type</td><td>El formato de la llamada no es soportado. Asegúrse de que el encabezado <code>Content-Type</code> sea <code>application/json</code></td></tr><tr><td>205</td><td>400</td><td><code>MISSING_REQUEST_PARAMETER</code></td><td>Missing request parameter</td><td>La llamada carece de un parámetro importante.</td></tr><tr><td>206</td><td>400</td><td><code>MISSING_PATH_VARIABLE</code></td><td>Missing path variable</td><td>La llamada carece de una variable importante en la ruta.</td></tr><tr><td>207</td><td>400</td><td><code>INVALID_REQUEST_PARAMETER_TYPE</code></td><td>Invalid request parameter type</td><td>Se ha enviado un tipo de parametro incorrecto.</td></tr><tr><td>208</td><td>404</td><td><code>RESOURCE_NOT_FOUND</code></td><td>Resource not found</td><td>El <code>deposit_id</code> no existe.</td></tr><tr><td>209</td><td>400</td><td><code>INVALID_REQUEST_BODY</code></td><td>Invalid request body: {details}</td><td>Hay un error de sintaxis en el JSON.</td></tr><tr><td>217</td><td>403</td><td><code>FORBIDDEN_MERCHANT</code></td><td>Merchant has no authorization to use this API</td><td>Su comercio no está habilitado a utilizar esa API. Póngase en contacto con su Account Manager.</td></tr><tr><td>300</td><td>400</td><td><code>USER_BLACKLISTED</code></td><td>User blacklisted</td><td>El usuario ha cometido fraude previamente y el depósito fue declinado.</td></tr><tr><td>301</td><td>400</td><td><code>USER_GREYLISTED</code></td><td>User greylisted</td><td>Se ha detectado actividad inusual y hemos bloqueado al usuario.</td></tr><tr><td>302</td><td>400</td><td><code>USER_UNAUTHORIZED</code></td><td>User unauthorized</td><td>El usuario está bloqueado. Para más información acceda a la sección Clients del Tupay Panel.</td></tr><tr><td>303</td><td>400</td><td><code>USER_UNAUTHORIZED_REG_STATUS</code></td><td>User unauthorized due to cadastral situation</td><td>Revise la situación cadastral del usuario.</td></tr><tr><td>304</td><td>400</td><td><code>USER_LIMIT_EXCEEDED</code></td><td>The user limit has been exceeded: {TRANSACTION|DAILY|WEEKLY|MONTHLY}</td><td>Revise los limites del usuario en el Tupay Panel bajo la sección Clients.</td></tr><tr><td>305</td><td>400</td><td><code>PAYMENT_METHOD_RESTRICTED</code></td><td>Restricted payment method type</td><td>El tipo de pago se ha deshabilitado al usuario.</td></tr><tr><td>400</td><td>400</td><td><code>INVALID_AMOUNT</code></td><td>Invalid amount. The minimum is USD 2 or equivalent in local currency</td><td>El monto no ha a alcanzado el mínimo.</td></tr><tr><td>401</td><td>400</td><td><code>PAYMENT_METHOD_NOT_FOUND</code></td><td>Payment method not found</td><td>El <code>payment_method</code> enviado es incorrecto.</td></tr><tr><td>402</td><td>400</td><td><code>INVOICE_ALREADY_USED</code></td><td>Invoice already used</td><td>El <code>invoice_id</code> enviado ya ha sido usado previamente.</td></tr><tr><td>404</td><td>400</td><td><code>ERROR_CREATING_PAYMENT</code></td><td>Payment method provider unavailable</td><td>Nuestro proveedor no está disponible temporalmente, por favor intente nuevamente.</td></tr><tr><td>406</td><td>400</td><td><code>INVALID_ADDRESS</code></td><td>Invalid address</td><td>El valor <code>address</code> enviado es inválido.</td></tr><tr><td>407</td><td>400</td><td><code>INVALID_CITY</code></td><td>Invalid city</td><td>El valor <code>city</code> enviado es inválido.</td></tr><tr><td>408</td><td>400</td><td><code>PAYMENT_METHOD_LIMIT_EXCEEDED</code></td><td>Payment method limit exceeded</td><td>El <code>amount</code> excede el máximo permitido por nuestro proveedor. Intente nuevamente con un monto inferior.</td></tr><tr><td>410</td><td>400</td><td><code>PAYMENT_METHOD_MINIMUM_REQUIRED</code></td><td>Payment method minimum required</td><td>El <code>amount</code> es menor al mínimo permitido por nuestro proveedor. Intente nuevamente con un monto superior.</td></tr><tr><td>411</td><td>400</td><td><code>INVALID_USER_DOCUMENT</code></td><td>Invalid user document ID</td><td>El <code>document</code> enviado fue rechazado por nuestro proveedor. Por favor verifique su validez.</td></tr><tr><td>412</td><td>400</td><td><code>PAYMENT_METHOD_UNAVAILABLE</code></td><td>Payment Method Unavailable</td><td>El método de pago no está disponible temporalmente </td></tr><tr><td>418</td><td>400</td><td><code>MISSING_REQUIRED_FIELDS</code></td><td>Missing required fields in order to generate Deposit</td><td>La llamada carece de un campo requerido.</td></tr><tr><td>419</td><td>400</td><td><code>MISSING_PAYER_ID_OR_DOCUMENT</code></td><td>payer.id or payer.document field is missing</td><td>La llamada carece de <code>payer.id</code> o de <code>payer.document</code>.</td></tr><tr><td>500</td><td>500</td><td><code>GENERIC_ERROR</code></td><td>Oh no! Something has gone wrong. Please contact a system administrator</td><td>Error interno, por favor contacte a soporte.</td></tr><tr><td>720</td><td>400</td><td><code>MISSING_CONFIGURATION</code></td><td>Missing configuration for merchant account</td><td>Hay una configuración faltante, póngase en contacto con su Account Manager.</td></tr></tbody></table>

[^1]:
