> For the complete documentation index, see [llms.txt](https://docs.payvalida.com/api-recaudo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payvalida.com/api-recaudo/ordenes-de-compra/registrar.md).

# Registrar

<div align="left"><img src="/files/-MMxI-WOkfirFEK999lc" alt=""></div>

{% hint style="success" %}
**Producción:** <https://api.payvalida.com/api/v3/porders>
{% endhint %}

{% hint style="success" %}
**Sandbox:** <https://api-test.payvalida.com/api/v3/porders>
{% endhint %}

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

<table data-header-hidden><thead><tr><th width="139">Campo</th><th width="100">Tipo</th><th width="112">Requerido</th><th>Descripción</th></tr></thead><tbody><tr><td>Campo</td><td>Tipo</td><td>Requerido</td><td>Descripción</td></tr><tr><td>merchant</td><td>string</td><td>si</td><td>Nombre asignado para el comercio en Payvalida. Se entrega con las credenciales. </td></tr><tr><td>email</td><td>string</td><td>si</td><td>Correo electrónico del comprador. Debe cumplir con el formato de correo valido.</td></tr><tr><td>country</td><td>number</td><td>si</td><td><a href="https://payvalida.gitbook.io/api-cashin/codigos-de-pais-y-monedas">Código del pais.</a></td></tr><tr><td>order</td><td>string</td><td>si</td><td>Código de la orden para el comercio. <strong>Este código debe ser único para todas las ordenes registradas desde el comercio.</strong> Se utilizara para la notificación. No debe contener guiones bajos ni caracteres especiales.</td></tr><tr><td>reference</td><td>string</td><td>no</td><td><p>Número de la referencia con la que el cliente efectuará el pago. No es posible generar referencias alfanuméricas o con caracteres especiales. Este número es <strong>único</strong> en Payvalida. Si no se envía, se proporcionará uno disponible. Si se envía, puede darse la posibilidad de colisiones y será rechazada la creación de la orden. <br><br>Longitud máxima:<br>Colombia <img src="https://fonts.gstatic.com/s/e/notoemoji/15.0/1f1e8_1f1f4/72.png" alt="🇨🇴" data-size="line">: 15.</p><p>Ecuador <img src="https://fonts.gstatic.com/s/e/notoemoji/15.0/1f1ea_1f1e8/72.png" alt="🇪🇨" data-size="line">: 16.<br>El Salvador🇸🇻: 16.</p><p>Guatemala <img src="https://fonts.gstatic.com/s/e/notoemoji/15.0/1f1ec_1f1f9/72.png" alt="🇬🇹" data-size="line">: 16.</p><p>Perú <img src="https://fonts.gstatic.com/s/e/notoemoji/15.0/1f1f5_1f1ea/72.png" alt="🇵🇪" data-size="line">: 11.<br></p></td></tr><tr><td>money</td><td>string</td><td>si</td><td><a href="https://payvalida.gitbook.io/api-cashin/codigos-de-pais-y-monedas">Código de la moneda de pago. </a></td></tr><tr><td>amount</td><td>string</td><td>si</td><td>Monto de la orden para el recaudo. Si se envía este campo en cero ("0") la orden será de monto abierto por lo que el cliente puede pagar cualquier monto y se notificará el monto pagado.<br><br>Para el uso de decimales, se debe utilizar el punto (.) como separador y el número de decimales no debe exceder de 2 dígitos. Ejemplo: "amount": "10.95"</td></tr><tr><td>description</td><td>string</td><td>si</td><td>Descripción corta de la orden. No incluir caracteres especiales. </td></tr><tr><td>method</td><td>string</td><td>no</td><td><a href="https://payvalida.gitbook.io/api-cashin/medios-de-pago">Método de pago para la orden. </a>Si no se envía la orden se podrá pagar por cualquiera de los metodos de pago registrados en el comercio.</td></tr><tr><td>language</td><td>string</td><td>no</td><td>lenguaje de la petición. es o en. default: es</td></tr><tr><td>recurrent</td><td>bool</td><td>si</td><td>Indica si la orden es o no recurrente. Si la orden es recurrente está no expira y se puede pagar multiples veces por el usuario. La notificación para recurrentes se realizara con el consecutivo (order+_+consecutivo) que aumenta según la cantidad de pagos. (La recurrencia solo aplica para pagos en efectivo)</td></tr><tr><td>expiration</td><td>string</td><td>si</td><td>Fecha de expiración de la orden en formato DD/MM/AAAA. No puede superar 30 días calendario y no debe ser inferior a la fecha actual. </td></tr><tr><td>iva</td><td>string</td><td>si</td><td>Monto porcentual correspondiente al IVA de la orden. Si tu medio de pago es tarjeta de crédito debes indicar este valor para el calculo del reteIVA.</td></tr><tr><td>checksum</td><td>string</td><td>si</td><td>Cadena de comprobación con SHA512 (email + country + order + money + amount + FIXED_HASH)</td></tr><tr><td>user_di</td><td>string</td><td>no</td><td>Número del documento de identidad del comprador.</td></tr><tr><td>user_type_di</td><td>string</td><td>no</td><td>Tipo del documento de identidad del cliente.</td></tr><tr><td>user_name</td><td>string</td><td>no</td><td>nombre del cliente en el documento de identidad (no acepta caracteres especiales ni acentos).</td></tr><tr><td>redirect_timeout</td><td>string</td><td>no</td><td>Tiempo de espera para redireccionar automáticamente al sitio del comercio cuando la operación de pago ha sido completada. Aplica para TC y PSE en Colombia. (Default: 15000 ms).</td></tr><tr><td>shortener</td><td>bool</td><td>no</td><td>Indica si la url recibida en el checkout esta acortada o no.</td></tr><tr><td>get_deposit_url</td><td>bool</td><td>no</td><td>Por defecto false. Poner en true si en el response quieren recibir el formulario de registro de depósitos.</td></tr><tr><td>additional_information</td><td>object</td><td>no</td><td><p>Permite pre-diligenciar información del usuario en nuestro checkout, definiendo si es información editable o no.</p><p></p><p>La información adicional que puede contener este campo se encuentra en <a href="/pages/zLQTalHMbqzycxYOywOk">Registrar Información Adicional</a>. </p></td></tr></tbody></table>
{% endtab %}

{% tab title="Request (ejemplo)" %}

```bash
curl --location --request POST 'https://api-test.payvalida.com/api/v3/porders' \
--header 'Content-Type: application/json' \
--data-raw '{
    "merchant": "kuanto",
    "email": "someone@example.com",
    "country": 343,
    "order": "999999991",
    "reference": "46534512",
    "money": "COP",
    "amount": "10500",
    "description": "Orden de prueba",
    "method": "",
    "language": "es",
    "recurrent": true,
    "expiration": "27/12/2020",
    "iva": "0",
    "checksum": "96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08",
    "user_di": "94320444",
    "user_type_di": "CC",
    "user_name": "NombreUsuario",
    "redirect_timeout": "300000"
}'
```

{% endtab %}

{% tab title="Response" %}

| Campo        | Estructura | Tipo   | Descripción                                                                                                                               |
| ------------ | ---------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| CODE         | -          | string | Código de respuesta **0000** para **OK.**                                                                                                 |
| DESC         | -          | string | Descripción de la respuesta.                                                                                                              |
| DATA         | -          | string | Datos del registro                                                                                                                        |
| Monto        | DATA       | string | Monto de la operación.                                                                                                                    |
| Operacion    | DATA       | string | Resultado de la creación de la orden.                                                                                                     |
| OrdenID      | DATA       | string | ID único de la orden asociado al comercio.                                                                                                |
| PVordenID    | DATA       | string | ID único asociado a la orden para Payvalida.                                                                                              |
| Referencia   | DATA       | string | Numero de la referencia con la cual el cliente realizara el pago.                                                                         |
| checkout     | DATA       | string | Link generado por Payvalida donde el cliente podrá efectuar el pago para las redes de recaudo electrónico y obtener información del pago. |
| deposit\_url | DATA       | string | Link de registro de depósito.                                                                                                             |
| {% endtab %} |            |        |                                                                                                                                           |

{% tab title="Response (ejemplo)" %}

```java
{
    "CODE": "0000",
    "DATA": {
        "Monto": "10500.0",
        "Operacion": "CREADA",
        "OrdenID": "999999991",
        "PVordenID": "1934480",
        "Referencia": "46534512",
        "checkout": "sandbox-short.payv.co/H4P1KTDr9"
    },
    "DESC": "OK"
}
```

{% endtab %}

{% tab title="Cabeceras" %}

| Cabecera      | Valor            |
| ------------- | ---------------- |
| Content-Type  | application/json |
| {% endtab %}  |                  |
| {% endtabs %} |                  |

{% hint style="info" %}
La identificación del comercio (merchant) y FIXED\_HASH, es generada al momento de [crear una cuenta](https://registro.payvalida.com) en nuestra plataforma y se envía por correo electrónico.
{% endhint %}

{% hint style="warning" %}
Para Ecuador, se deben enviar los datos: user\_di, user\_type\_document y user\_name.&#x20;
{% endhint %}

## Ejemplos

* **GO**

```go
package main
import (
	"bytes"
	"crypto/sha512"
	"encoding/hex"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"math/rand"
	"net/http"
	"time"
)
type Request struct {
	Country         int    `json:"country,omitempty"`
	Email           string `json:"email,omitempty"`
	Merchant        string `json:"merchant,omitempty"`
	Order           string `json:"order,omitempty"`
	Reference       string `json:"reference,omitempty"`
	Money           string `json:"money,omitempty"`
	Amount          string `json:"amount,omitempty"`
	Description     string `json:"description,omitempty"`
	Language        string `json:"language,omitempty"`
	Recurrent       bool   `json:"recurrent,omitempty"`
	Expiration      string `json:"expiration,omitempty"`
	Method          string `json:"method,omitempty"`
	Iva             string `json:"iva,omitempty"`
	Checksum        string `json:"checksum,omitempty"`
	UserDI          st¢›ring `json:"user_di,omitempty"`
	UserTypeDI      string `json:"user_type_di,omitempty"`
	RedirectTimeout string `json:"redirect_timeout,omitempty"`
	UserName        string `json:"user_name,omitempty"`
}
func main() {
	url := "https://api-test.payvalida.com/api/v3/porders"
	method := "POST"
	email := "someone@example.com"
	country := "343"
	order := "test" + fmt.Sprint(rand.Intn(999999999))
	money := "COP"
	amount := "20000"
	fixedHash := "xxccc_b0b20707cca2b283b5844e77cadf2b5813bd923362b91583c95b736c8763937c0e0df27e9b730c404eeac6484666430f6042c043089135e8d3e76f2e86a82c38"
	Paysha512 := sha512.Sum512([]byte(email + country + order + money + amount + fixedHash))
	checksum := hex.EncodeToString(Paysha512[:])
	date := time.Now()
	expiration := date.AddDate(0, 0, 2)
	request := Request{
		Country:         343,
		Email:           email,
		Merchant:        "kuanto",
		Order:           order,
		Reference:       "",
		Money:           money,
		Amount:          amount,
		Description:     "Test pruebas unitarias",
		Language:        "es",
		Recurrent:       false,
		Expiration:      expiration.Format("02/01/2006"),
		Method:          "",
		Iva:             "0",
		Checksum:        checksum,
		UserDI:          "90000000",
		UserTypeDI:      "CC",
		RedirectTimeout: "150000",
		UserName:        "devPayvalida",
	}
	json, err := json.Marshal(request)
	if err != nil {
		fmt.Println(err)
		return
	}
	client := &http.Client{}
	req, err := http.NewRequest(method, url, bytes.NewBuffer(json))
	if err != nil {
		fmt.Println(err)
		return
	}
	req.Header.Add("Content-Type", "application/json")
	res, err := client.Do(req)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer res.Body.Close()
	body, err := ioutil.ReadAll(res.Body)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(body))
}
```

* **PHP**

```go
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-test.payvalida.com/api/v3/porders",
  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 =>"{\n    \"merchant\": \"kuanto\",\n    \"email\": \"someone@example.com\",\n    \"country\": 343,\n    \"order\": \"999999991\",\n    \"reference\": \"46534512\",\n    \"money\": \"COP\",\n    \"amount\": \"10500\",\n    \"description\": \"Orden de prueba\",\n    \"method\": \"\",\n    \"language\": \"es\",\n    \"recurrent\": true,\n    \"expiration\": \"27/12/2020\",\n    \"iva\": \"0\",\n    \"checksum\": \"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08\",\n    \"user_di\": \"94320444\",\n    \"user_type_di\": \"CC\",\n    \"user_name\": \"NombreUsuario\",\n    \"redirect_timeout\": \"300000\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

```

* **JAVA**

```go
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"merchant\": \"kuanto\",\n    \"email\": \"someone@example.com\",\n    \"country\": 343,\n    \"order\": \"999999991\",\n    \"reference\": \"46534512\",\n    \"money\": \"COP\",\n    \"amount\": \"10500\",\n    \"description\": \"Orden de prueba\",\n    \"method\": \"\",\n    \"language\": \"es\",\n    \"recurrent\": true,\n    \"expiration\": \"27/12/2020\",\n    \"iva\": \"0\",\n    \"checksum\": \"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08\",\n    \"user_di\": \"94320444\",\n    \"user_type_di\": \"CC\",\n    \"user_name\": \"NombreUsuario\",\n    \"redirect_timeout\": \"300000\"\n}");
Request request = new Request.Builder()
  .url("https://api-test.payvalida.com/api/v3/porders")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
```

* **Python**

```go
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-test.payvalida.com")
payload = "{\n    \"merchant\": \"kuanto\",\n    \"email\": \"someone@example.com\",\n    \"country\": 343,\n    \"order\": \"999999991\",\n    \"reference\": \"46534512\",\n    \"money\": \"COP\",\n    \"amount\": \"10500\",\n    \"description\": \"Orden de prueba\",\n    \"method\": \"\",\n    \"language\": \"es\",\n    \"recurrent\": true,\n    \"expiration\": \"27/12/2020\",\n    \"iva\": \"0\",\n    \"checksum\": \"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08\",\n    \"user_di\": \"94320444\",\n    \"user_type_di\": \"CC\",\n    \"user_name\": \"NombreUsuario\",\n    \"redirect_timeout\": \"300000\"\n}"
headers = {
  'Content-Type': 'application/json'
}
conn.request("POST", "/api/v3/porders", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
```

* **JavaScript**

```go
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"merchant":"kuanto","email":"someone@example.com","country":343,"order":"999999991","reference":"46534512","money":"COP","amount":"10500","description":"Orden de prueba","method":"","language":"es","recurrent":true,"expiration":"27/12/2020","iva":"0","checksum":"96C79878E0CDC0C525090281141874D7494E0194B33E0E373DC412DD31AAD32B5DB2C681441C8007B2FCAF0873BBF2C8BFDB4A6E7D04DB8E52A843A30D6CFF08","user_di":"94320444","user_type_di":"CC","user_name":"NombreUsuario","redirect_timeout":"300000"});
var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};
fetch("https://api-test.payvalida.com/api/v3/porders", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```
