Crea una factura
POST/v1/invoices
Contrato v1 / 1.0.0 62 / 2026-10-10
En esta página
Crear una factura de Payments. Envíe chain y amount para obtener datos de pago fijos, o bien omita chain, asset, amount, address y tolerance y envíe invoice_currency e invoice_amount para que el pagador elija el método. Esta última opción requiere una clave de producción con permiso de escritura e Idempotency-Key; la creación y un reintento idéntico devuelven la URL de pago interactiva. GET y los listados mantienen enlaces de solo lectura. Tras un tiempo de espera agotado, repita el mismo cuerpo con el mismo Idempotency-Key; otros parámetros devuelven 409. Un reintento con clave devuelve 201 con el mismo ID. Sin clave, repetir una creación con método fijo puede crear otra factura. No crea un pago en la cadena de bloques.
Permisos de la clave: invoices / write / payments.
Parámetros
| Parámetro | Entrante | Obligatorio | Descripción |
|---|---|---|---|
Idempotency-Key | header | No | 16–80 letras ASCII, dígitos, guiones o guiones bajos. ID lógico de pedido único dentro de la cuenta. Obligatorio cuando el pagador elige el método de pago.string minLength: 16; maxLength: 80; pattern: ^[A-Za-z0-9_-]+$ |
Cuerpo de la solicitud
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
project | string | No | ID del proyecto Payments; se recomienda seleccionarlo explícitamente. Una clave limitada a un proyecto usa su proyecto. |
chain | string | No | Código de red. minLength: 1 |
asset | string | No | Activo de pago compatible: native, símbolo o identificador conocido. Los activos aceptados dependen de la red; si se omite, se selecciona native. Predeterminado: native |
amount | string | No | Importe cripto positivo en unidades del activo; la precisión no debe superar sus decimales. pattern: ^[0-9]+(?:\.[0-9]+)?$ |
reference | string | No | Tu referencia del pedido; no sustituye a Idempotency-Key. maxLength: 120 |
address | string | No | Dirección opcional del pool de pagos del proyecto. Si se omite, el servicio selecciona una. |
tolerance | string | No | Pago insuficiente permitido en unidades del activo, estrictamente inferior a amount. Omítelo para una tolerancia cero. pattern: ^[0-9]+(?:\.[0-9]+)?$ |
customer | object | No | |
product | object | No | |
payer | object | No | |
metadata | object | No | Hasta 20 pares, máximo 8192 bytes JSON. No incluyas secretos. |
invoice_currency | string | No | Moneda de tres letras de la cotización del pedido; solo junto con invoice_amount. pattern: ^[A-Za-z]{3}$ |
invoice_amount | string | No | Importe positivo del pedido en invoice_currency. Junto con chain y amount, es la instantánea del comerciante. Sin datos de pago, es el valor fijo de la factura que se utiliza para calcular el activo elegido por el pagador. maxLength: 80; pattern: ^[0-9]+(?:\.[0-9]+)?$ |
expires_in | integer | No | Plazo de pago en minutos, a partir de la emisión correcta de los datos. Si se omite o se indica 0, se aplica la política del proyecto (60 de forma predeterminada); máximo 10080. Las solicitudes anteriores con método fijo también consideran los valores negativos como omitidos; el pago con elección de método rechaza los valores negativos. Predeterminado: 60; maximum: 10080 |
{
"project": "2002",
"invoice_currency": "USD",
"invoice_amount": "12.50",
"reference": "order-42"
}Ejemplos de solicitudes
Los ejemplos realizan una operación real en tu cuenta. Configura las variables de entorno indicadas en el código. Mantén tu clave privada; las solicitudes de escritura no se reintentan automáticamente.
#!/usr/bin/env bash
set -euo pipefail
: "${CRYPTANIO_API_KEY:?Set CRYPTANIO_API_KEY}"
: "${CRYPTANIO_OPERATION_ID:?Set CRYPTANIO_OPERATION_ID}"
: "${CRYPTANIO_PROJECT_ID:?Set CRYPTANIO_PROJECT_ID}"
json_string() {
local text="$1" char code index output='"'
for ((index=0; index<${#text}; index++)); do
char="${text:index:1}"
case "$char" in
'"'|'\') output+="\\$char" ;;
*) printf -v code '%d' "'$char"
if ((code < 32)); then printf -v char '\\u%04x' "$code"; fi
output+="$char" ;;
esac
done
printf '%s"' "$output"
}
response_file="$(mktemp)"
trap 'rm -f "$response_file"' EXIT
transfer_status=0
http_status="$(curl \
--silent --show-error --max-time 30 --request POST \
--header "Authorization: Bearer $CRYPTANIO_API_KEY" \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $CRYPTANIO_OPERATION_ID" \
--data-binary '{"project":'"$(json_string "$CRYPTANIO_PROJECT_ID")"',"invoice_currency":"USD","invoice_amount":"12.50","reference":"order-42"}' \
"https://api.cryptanio.com/v1/invoices" \
--output "$response_file" --write-out '%{http_code}')" || transfer_status=$?
if [[ "$http_status" == 2?? ]]; then
cat "$response_file"
exit "$transfer_status"
fi
printf 'HTTP %s\n' "$http_status" >&2
cat "$response_file" >&2
exit 1
// Go; standard library only. Run: go run request.go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func env(name string) string {
value := os.Getenv(name)
if value == "" { fmt.Fprintln(os.Stderr, "Set", name); os.Exit(1) }
return value
}
func run() error {
path := "/v1/invoices"
endpoint, err := url.Parse("https://api.cryptanio.com" + path)
if err != nil { return err }
query := endpoint.Query()
endpoint.RawQuery = query.Encode()
var payload map[string]any
if err := json.Unmarshal([]byte("{\"project\":\"2002\",\"invoice_currency\":\"USD\",\"invoice_amount\":\"12.50\",\"reference\":\"order-42\"}"), &payload); err != nil { return err }
payload["project"] = env("CRYPTANIO_PROJECT_ID")
body, err := json.Marshal(payload)
if err != nil { return err }
request, err := http.NewRequest("POST", endpoint.String(), bytes.NewReader(body))
if err != nil { return err }
request.Header.Set("Authorization", "Bearer " + env("CRYPTANIO_API_KEY"))
request.Header.Set("Accept", "application/json")
request.Header.Set("Content-Type", "application/json")
request.Header.Set("Idempotency-Key", env("CRYPTANIO_OPERATION_ID"))
client := &http.Client{Timeout: 30 * time.Second, CheckRedirect: func(*http.Request, []*http.Request) error { return http.ErrUseLastResponse }}
response, err := client.Do(request)
if err != nil { return err }
defer response.Body.Close()
if response.StatusCode < 200 || response.StatusCode >= 300 {
body, err := io.ReadAll(response.Body)
if err != nil { return err }
return fmt.Errorf("HTTP %d: %s", response.StatusCode, body)
}
_, err = io.Copy(os.Stdout, response.Body)
return err
}
func main() {
if err := run(); err != nil { fmt.Fprintln(os.Stderr, err); os.Exit(1) }
}
// Cargo.toml dependencies:
// reqwest = { version = "=0.12.24", features = ["blocking", "json"] }
// serde_json = "=1.0.145"
use std::{error::Error, io, time::Duration};
use reqwest::{blocking::Client, redirect::Policy, Method, Url};
fn env(name: &str) -> Result<String, Box<dyn Error>> {
let value = std::env::var(name)?;
if value.is_empty() { return Err(format!("Set {name}").into()); }
Ok(value)
}
fn run() -> Result<(), Box<dyn Error>> {
let mut url = Url::parse("https://api.cryptanio.com")?;
{
let mut segments = url.path_segments_mut().map_err(|_| "Invalid base URL")?;
segments.clear();
segments.push("v1");
segments.push("invoices");
}
let client = Client::builder().timeout(Duration::from_secs(30)).redirect(Policy::none()).build()?;
let request = client.request(Method::POST, url)
.header("Authorization", format!("Bearer {}", env("CRYPTANIO_API_KEY")?))
.header("Accept", "application/json".to_owned())
.header("Content-Type", "application/json".to_owned())
.header("Idempotency-Key", env("CRYPTANIO_OPERATION_ID")?);
let mut body: serde_json::Value = serde_json::from_str("{\"project\":\"2002\",\"invoice_currency\":\"USD\",\"invoice_amount\":\"12.50\",\"reference\":\"order-42\"}")?;
body["project"] = serde_json::Value::String(env("CRYPTANIO_PROJECT_ID")?);
let request = request.json(&body);
let mut response = request.send()?;
let status = response.status();
if !status.is_success() { return Err(format!("HTTP {}: {}", status.as_u16(), response.text()?).into()); }
io::copy(&mut response, &mut io::stdout())?;
Ok(())
}
fn main() {
if let Err(error) = run() { eprintln!("{error}"); std::process::exit(1); }
}
<?php
// PHP 8 with the cURL extension. Run this on your server.
function env(string $name): string {
$value = getenv($name);
if ($value === false || $value === '') throw new RuntimeException('Set ' . $name);
return $value;
}
try {
$path = '/v1/invoices';
$query = [
];
$url = 'https://api.cryptanio.com' . $path . ($query ? '?' . http_build_query($query, '', '&', PHP_QUERY_RFC3986) : '');
$headers = [
'Authorization: ' . 'Bearer ' . env('CRYPTANIO_API_KEY'),
'Accept: ' . 'application/json',
'Content-Type: ' . 'application/json',
'Idempotency-Key: ' . env('CRYPTANIO_OPERATION_ID'),
];
$body = json_decode('{"project":"2002","invoice_currency":"USD","invoice_amount":"12.50","reference":"order-42"}', true, 512, JSON_THROW_ON_ERROR);
$body['project'] = env('CRYPTANIO_PROJECT_ID');
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$response = curl_exec($curl);
if ($response === false) throw new RuntimeException(curl_error($curl));
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status < 200 || $status >= 300) throw new RuntimeException('HTTP ' . $status . ': ' . $response);
echo $response;
} catch (Throwable $error) {
fwrite(STDERR, $error->getMessage() . PHP_EOL);
exit(1);
}
# Python 3; standard library only.
import json
import os
import sys
from urllib.error import HTTPError, URLError
from urllib.parse import quote, urlencode
from urllib.request import HTTPRedirectHandler, Request, build_opener
def env(name):
result = os.environ.get(name)
if not result:
raise ValueError("Set " + name)
return result
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
try:
path = "/v1/invoices"
query = {
}
url = "https://api.cryptanio.com" + path + ("?" + urlencode(query) if query else "")
headers = {
"Authorization": "Bearer " + env("CRYPTANIO_API_KEY"),
"Accept": "application/json",
"Content-Type": "application/json",
"Idempotency-Key": env("CRYPTANIO_OPERATION_ID"),
}
body = json.loads("{\"project\":\"2002\",\"invoice_currency\":\"USD\",\"invoice_amount\":\"12.50\",\"reference\":\"order-42\"}")
body["project"] = env("CRYPTANIO_PROJECT_ID")
data = json.dumps(body).encode("utf-8")
request = Request(url, data=data, headers=headers, method="POST")
with build_opener(NoRedirect()).open(request, timeout=30) as response:
if not 200 <= response.status < 300:
raise ValueError("HTTP " + str(response.status))
sys.stdout.buffer.write(response.read())
except HTTPError as error:
print("HTTP " + str(error.code) + ": " + error.read().decode("utf-8", errors="replace"), file=sys.stderr)
sys.exit(1)
except (ValueError, URLError, OSError) as error:
print(str(error), file=sys.stderr)
sys.exit(1)
// Node.js 18+. Run on your server, never in a browser.
const env = name => {
const result = process.env[name];
if (!result) throw new Error(`Set ${name}`);
return result;
};
try {
let path = "/v1/invoices";
const url = new URL(path, "https://api.cryptanio.com");
const headers = {
"Authorization": "Bearer " + env("CRYPTANIO_API_KEY"),
"Accept": "application/json",
"Content-Type": "application/json",
"Idempotency-Key": env("CRYPTANIO_OPERATION_ID"),
};
const body = {
"project": "2002",
"invoice_currency": "USD",
"invoice_amount": "12.50",
"reference": "order-42"
};
body["project"] = env("CRYPTANIO_PROJECT_ID");
const response = await fetch(url, {
method: "POST", headers, redirect: "manual",
signal: AbortSignal.timeout(30_000), body: JSON.stringify(body),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
if (response.body) {
for await (const chunk of response.body) process.stdout.write(chunk);
}
} catch (error) {
console.error(error.message);
process.exitCode = 1;
}
Respuestas y errores
201 Respuesta correcta.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
checkout_url | string | No | Página de pago alojada por Cryptanio. La creación o el reintento de una factura con elección de método devuelve un enlace de acceso interactivo que permite elegirlo hasta que se detecte un pago. La creación con método fijo y todos los GET y listados devuelven un enlace independiente de solo lectura. Comparta cualquiera de los enlaces solo con el pagador previsto; ninguno da acceso a la cuenta ni a la clave API. Confirme el pago mediante la API de facturas o un webhook verificado, no mediante una redirección del navegador.uri |
id | string | Sí | Identificador opaco; consérvalo como cadena. minLength: 1 |
status | string | Sí | pending espera el pago; seen detectado; partial parcialmente pagado; paid liquidado; underpaid/overpaid/late requieren una decisión; expired plazo vencido; canceled anulado.pending, seen, paid, underpaid, partial, overpaid, expired, late, canceled |
project_id | string | Sí | Identificador opaco; consérvalo como cadena. minLength: 1 |
reference | string | No | Referencia del pedido. |
customer | object | No | |
product | object | No | |
payer | object | No | |
metadata | object | No | Hasta 20 pares, máximo 8192 bytes JSON. No incluyas secretos. |
invoice_currency | string | No | Moneda de la cotización del pedido. |
invoice_amount | string | No | Importe decimal exacto como cadena; no uses coma flotante. pattern: ^[0-9]+(?:\.[0-9]+)?$ |
chain | string | Sí | Código de red. |
asset | string | Sí | Activo de pago. |
address | string | Sí | Dirección de pago. |
payment_route | object | No | Identificador de pago en la cadena obligatorio cuando una fuente automática genera un tag, memo, comentario TON o referencia Solana Pay. Consérvelo junto con la dirección de recepción; la referencia del pedido del comercio es un campo independiente. |
payment_uri | string | No | Solicitud de transferencia Solana Pay con el destinatario, el importe exacto, el mint del token admitido y la referencia obligatoria. Codifique este URI en el QR de pago en lugar de la dirección de recepción sin más datos.uri |
amount | string | string | Sí | Importe real que debe enviar el comprador; puede diferir del solicitado para distinguir facturas. Vacío hasta que se elija un método. |
amount_raw | string | string | Sí | Importe entero en la unidad mínima, como cadena de texto. Vacío hasta que se elija un método. |
asked | string | string | Sí | Importe de criptomoneda solicitado originalmente. Vacío hasta que se elija un método. |
decimals | integer | Sí | Decimales del activo. minimum: 0 |
tolerance | string | No | Tolerancia en unidades mínimas; a diferencia de request.tolerance. pattern: ^[0-9]+$ |
sandbox | boolean | Sí | Una factura de prueba no demuestra un pago real en la blockchain. |
needs_decision | boolean | No | Los estados underpaid, overpaid o late requieren una decisión. |
paid | string | No | Importe recibido en unidades mínimas. pattern: ^[0-9]+$ |
tx_id | string | No | Identificador de la transacción de pago. |
paid_at | string | No | Fecha y hora UTC en RFC 3339.date-time |
expires_at | string | Sí | Fecha y hora UTC en RFC 3339.date-time |
created_at | string | Sí | Fecha y hora UTC en RFC 3339.date-time |
{
"id": "2100",
"status": "pending",
"project_id": "2002",
"reference": "order-42",
"chain": "ethereum",
"asset": "USDC",
"address": "0x52908400098527886E0F7030069857D2E4169EE7",
"amount": "12.5",
"amount_raw": "12500000",
"asked": "12.5",
"decimals": 6,
"sandbox": true,
"expires_at": "2026-10-06T11:00:00Z",
"created_at": "2026-10-06T10:00:00Z"
}400 Solicitud inválida (bad_request, unsupported_asset).
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}401 No hay una clave API activa válida (unauthorized).
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}403 La clave no permite la operación, el proyecto, el servicio o la IP; correo sin confirmar.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}409 Conflicto de estado, parámetros de reintento distintos o límite de recursos de pago (conflict, limit_reached, service_inactive).
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}429 Demasiadas solicitudes (rate_limited); reintenta después de Retry-After.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}500 Error interno (internal).
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}503 Indisponibilidad temporal (unavailable); reintenta con espera progresiva.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |
{
"error": {
"code": "forbidden",
"message": "this API key is read-only"
}
}Objetos anidados
Invoice
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
checkout_url | string | No | Página de pago alojada por Cryptanio. La creación o el reintento de una factura con elección de método devuelve un enlace de acceso interactivo que permite elegirlo hasta que se detecte un pago. La creación con método fijo y todos los GET y listados devuelven un enlace independiente de solo lectura. Comparta cualquiera de los enlaces solo con el pagador previsto; ninguno da acceso a la cuenta ni a la clave API. Confirme el pago mediante la API de facturas o un webhook verificado, no mediante una redirección del navegador.uri |
id | string | Sí | Identificador opaco; consérvalo como cadena. minLength: 1 |
status | string | Sí | pending espera el pago; seen detectado; partial parcialmente pagado; paid liquidado; underpaid/overpaid/late requieren una decisión; expired plazo vencido; canceled anulado.pending, seen, paid, underpaid, partial, overpaid, expired, late, canceled |
project_id | string | Sí | Identificador opaco; consérvalo como cadena. minLength: 1 |
reference | string | No | Referencia del pedido. |
customer | object | No | |
product | object | No | |
payer | object | No | |
metadata | object | No | Hasta 20 pares, máximo 8192 bytes JSON. No incluyas secretos. |
invoice_currency | string | No | Moneda de la cotización del pedido. |
invoice_amount | string | No | Importe decimal exacto como cadena; no uses coma flotante. pattern: ^[0-9]+(?:\.[0-9]+)?$ |
chain | string | Sí | Código de red. |
asset | string | Sí | Activo de pago. |
address | string | Sí | Dirección de pago. |
payment_route | object | No | Identificador de pago en la cadena obligatorio cuando una fuente automática genera un tag, memo, comentario TON o referencia Solana Pay. Consérvelo junto con la dirección de recepción; la referencia del pedido del comercio es un campo independiente. |
payment_uri | string | No | Solicitud de transferencia Solana Pay con el destinatario, el importe exacto, el mint del token admitido y la referencia obligatoria. Codifique este URI en el QR de pago en lugar de la dirección de recepción sin más datos.uri |
amount | string | string | Sí | Importe real que debe enviar el comprador; puede diferir del solicitado para distinguir facturas. Vacío hasta que se elija un método. |
amount_raw | string | string | Sí | Importe entero en la unidad mínima, como cadena de texto. Vacío hasta que se elija un método. |
asked | string | string | Sí | Importe de criptomoneda solicitado originalmente. Vacío hasta que se elija un método. |
decimals | integer | Sí | Decimales del activo. minimum: 0 |
tolerance | string | No | Tolerancia en unidades mínimas; a diferencia de request.tolerance. pattern: ^[0-9]+$ |
sandbox | boolean | Sí | Una factura de prueba no demuestra un pago real en la blockchain. |
needs_decision | boolean | No | Los estados underpaid, overpaid o late requieren una decisión. |
paid | string | No | Importe recibido en unidades mínimas. pattern: ^[0-9]+$ |
tx_id | string | No | Identificador de la transacción de pago. |
paid_at | string | No | Fecha y hora UTC en RFC 3339.date-time |
expires_at | string | Sí | Fecha y hora UTC en RFC 3339.date-time |
created_at | string | Sí | Fecha y hora UTC en RFC 3339.date-time |
ID
Identificador opaco. Su formato no está garantizado; no lo conviertas a número.
string Identificador opaco. Su formato no está garantizado; no lo conviertas a número.
InvoiceStatus
pending espera el pago; seen detectado; partial parcialmente pagado; paid liquidado; underpaid/overpaid/late requieren una decisión; expired plazo vencido; canceled anulado.
string pending espera el pago; seen detectado; partial parcialmente pagado; paid liquidado; underpaid/overpaid/late requieren una decisión; expired plazo vencido; canceled anulado.
Customer
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | Identificador del cliente en tu sistema. maxLength: 120 |
Product
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | No | Identificador del producto en tu sistema. maxLength: 120 |
name | string | No | Nombre del producto. maxLength: 200 |
quantity | integer | No | Cantidad. minimum: 1; maximum: 1000000 |
Payer
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
comment | string | Sí | Comentario del pagador. maxLength: 500 |
InvoiceMetadata
Hasta 20 pares, máximo 8192 bytes JSON. No incluyas secretos.
object Hasta 20 pares, máximo 8192 bytes JSON. No incluyas secretos.
Decimal
string
RawAmount
string
InvoiceRequest
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
project | string | No | ID del proyecto Payments; se recomienda seleccionarlo explícitamente. Una clave limitada a un proyecto usa su proyecto. |
chain | string | No | Código de red. minLength: 1 |
asset | string | No | Activo de pago compatible: native, símbolo o identificador conocido. Los activos aceptados dependen de la red; si se omite, se selecciona native. Predeterminado: native |
amount | string | No | Importe cripto positivo en unidades del activo; la precisión no debe superar sus decimales. pattern: ^[0-9]+(?:\.[0-9]+)?$ |
reference | string | No | Tu referencia del pedido; no sustituye a Idempotency-Key. maxLength: 120 |
address | string | No | Dirección opcional del pool de pagos del proyecto. Si se omite, el servicio selecciona una. |
tolerance | string | No | Pago insuficiente permitido en unidades del activo, estrictamente inferior a amount. Omítelo para una tolerancia cero. pattern: ^[0-9]+(?:\.[0-9]+)?$ |
customer | object | No | |
product | object | No | |
payer | object | No | |
metadata | object | No | Hasta 20 pares, máximo 8192 bytes JSON. No incluyas secretos. |
invoice_currency | string | No | Moneda de tres letras de la cotización del pedido; solo junto con invoice_amount. pattern: ^[A-Za-z]{3}$ |
invoice_amount | string | No | Importe positivo del pedido en invoice_currency. Junto con chain y amount, es la instantánea del comerciante. Sin datos de pago, es el valor fijo de la factura que se utiliza para calcular el activo elegido por el pagador. maxLength: 80; pattern: ^[0-9]+(?:\.[0-9]+)?$ |
expires_in | integer | No | Plazo de pago en minutos, a partir de la emisión correcta de los datos. Si se omite o se indica 0, se aplica la política del proyecto (60 de forma predeterminada); máximo 10080. Las solicitudes anteriores con método fijo también consideran los valores negativos como omitidos; el pago con elección de método rechaza los valores negativos. Predeterminado: 60; maximum: 10080 |
Error
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
error | object | Sí |