Skip to main content
POST
/
products
curl https://api.onepay.la/v1/products \
  -X POST \
  -H "Authorization: Bearer sk_test_xxx" \
  -H "x-idempotency: idem_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OnePay Pro",
    "description": "Para negocios en crecimiento.",
    "internal_id": "pro",
    "tax_rate": 19,
    "marketing_features": [
      { "name": "Clientes ilimitados" },
      { "name": "Reintentos inteligentes" }
    ]
  }'
const response = await fetch('https://api.onepay.la/v1/products', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_test_xxx',
    'x-idempotency': 'idem_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'OnePay Pro',
    description: 'Para negocios en crecimiento.',
    internal_id: 'pro',
    tax_rate: 19,
    marketing_features: [
      { name: 'Clientes ilimitados' },
      { name: 'Reintentos inteligentes' }
    ]
  })
});
const data = await response.json();
console.log(data);
import requests

response = requests.post(
    'https://api.onepay.la/v1/products',
    headers={
        'Authorization': 'Bearer sk_test_xxx',
        'x-idempotency': 'idem_xxx'
    },
    json={
        'name': 'OnePay Pro',
        'description': 'Para negocios en crecimiento.',
        'internal_id': 'pro',
        'tax_rate': 19,
        'marketing_features': [
            {'name': 'Clientes ilimitados'},
            {'name': 'Reintentos inteligentes'}
        ]
    }
)
data = response.json()
print(data)
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.onepay.la/v1/products",
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_xxx",
        "x-idempotency: idem_xxx",
        "Content-Type: application/json"
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "name" => "OnePay Pro",
        "description" => "Para negocios en crecimiento.",
        "internal_id" => "pro",
        "tax_rate" => 19,
        "marketing_features" => [
            ["name" => "Clientes ilimitados"],
            ["name" => "Reintentos inteligentes"]
        ]
    ])
]);

$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data);
?>
{
  "id": "9f5d85a0-1111-7000-aaaa-000000000001",
  "object": "product",
  "name": "OnePay Pro",
  "description": "Para negocios en crecimiento.",
  "active": true,
  "internal_id": "pro",
  "unit_label": null,
  "tax_rate": 19,
  "default_price": null,
  "marketing_features": [
    { "name": "Clientes ilimitados" },
    { "name": "Reintentos inteligentes" }
  ],
  "metadata": null,
  "created_at": "2026-07-13T12:00:00.000000Z",
  "updated_at": "2026-07-13T12:00:00.000000Z"
}
{
  "message": "El campo name es obligatorio.",
  "code": 10001,
  "code_name": "validation_error",
  "errors": {
    "name": [
      "El campo name es obligatorio."
    ]
  }
}
{
  "message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
  "code": 10003,
  "code_name": "idempotency_error"
}
Registra un nuevo producto en tu catálogo. El monto no se define aquí: se configura en los precios asociados al producto.

Headers

x-idempotency
string
required
Token único para garantizar la idempotencia de la petición

Body

name
string
required
Nombre del producto. Máximo 255 caracteres.
description
string
Descripción del producto. Máximo 1000 caracteres.
internal_id
string
Tu identificador interno del producto. Máximo 255 caracteres.
unit_label
string
Etiqueta de la unidad (ej. asientos). Máximo 50 caracteres.
tax_rate
number
Porcentaje de IVA. Valor entre 0 y 100.
marketing_features
array
Características de marketing (máximo 15). Cada elemento es un objeto { "name": string }, donde name admite hasta 80 caracteres.
metadata
object
Datos adicionales de tu aplicación.
curl https://api.onepay.la/v1/products \
  -X POST \
  -H "Authorization: Bearer sk_test_xxx" \
  -H "x-idempotency: idem_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OnePay Pro",
    "description": "Para negocios en crecimiento.",
    "internal_id": "pro",
    "tax_rate": 19,
    "marketing_features": [
      { "name": "Clientes ilimitados" },
      { "name": "Reintentos inteligentes" }
    ]
  }'
const response = await fetch('https://api.onepay.la/v1/products', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_test_xxx',
    'x-idempotency': 'idem_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'OnePay Pro',
    description: 'Para negocios en crecimiento.',
    internal_id: 'pro',
    tax_rate: 19,
    marketing_features: [
      { name: 'Clientes ilimitados' },
      { name: 'Reintentos inteligentes' }
    ]
  })
});
const data = await response.json();
console.log(data);
import requests

response = requests.post(
    'https://api.onepay.la/v1/products',
    headers={
        'Authorization': 'Bearer sk_test_xxx',
        'x-idempotency': 'idem_xxx'
    },
    json={
        'name': 'OnePay Pro',
        'description': 'Para negocios en crecimiento.',
        'internal_id': 'pro',
        'tax_rate': 19,
        'marketing_features': [
            {'name': 'Clientes ilimitados'},
            {'name': 'Reintentos inteligentes'}
        ]
    }
)
data = response.json()
print(data)
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.onepay.la/v1/products",
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sk_test_xxx",
        "x-idempotency: idem_xxx",
        "Content-Type: application/json"
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "name" => "OnePay Pro",
        "description" => "Para negocios en crecimiento.",
        "internal_id" => "pro",
        "tax_rate" => 19,
        "marketing_features" => [
            ["name" => "Clientes ilimitados"],
            ["name" => "Reintentos inteligentes"]
        ]
    ])
]);

$data = json_decode(curl_exec($curl), true);
curl_close($curl);
print_r($data);
?>

Response

id
string
Identificador único (UUID) del producto.
object
string
Siempre product.
name
string
Nombre del producto.
description
string | null
Descripción del producto.
active
boolean
false cuando el producto está archivado.
internal_id
string | null
Tu identificador interno del producto.
unit_label
string | null
Etiqueta de la unidad (ej. asientos).
tax_rate
number | null
Porcentaje de IVA (0-100).
default_price
string | null
ID del precio por defecto del producto.
marketing_features
array
Características de marketing (hasta 15), cada una con la forma { "name": string }.
metadata
object | null
Datos adicionales de tu aplicación.
created_at
string
Fecha de creación (ISO 8601).
updated_at
string
Fecha de última actualización (ISO 8601).
{
  "id": "9f5d85a0-1111-7000-aaaa-000000000001",
  "object": "product",
  "name": "OnePay Pro",
  "description": "Para negocios en crecimiento.",
  "active": true,
  "internal_id": "pro",
  "unit_label": null,
  "tax_rate": 19,
  "default_price": null,
  "marketing_features": [
    { "name": "Clientes ilimitados" },
    { "name": "Reintentos inteligentes" }
  ],
  "metadata": null,
  "created_at": "2026-07-13T12:00:00.000000Z",
  "updated_at": "2026-07-13T12:00:00.000000Z"
}
{
  "message": "El campo name es obligatorio.",
  "code": 10001,
  "code_name": "validation_error",
  "errors": {
    "name": [
      "El campo name es obligatorio."
    ]
  }
}
{
  "message": "No se puede generar la operación, genera un token de idempotencia y envíelo en los headers como x-idempotency",
  "code": 10003,
  "code_name": "idempotency_error"
}