Skip to main content
PUT
/
products
/
{id}
curl https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001 \
  -X PUT \
  -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 acelerado.",
    "internal_id": "pro",
    "tax_rate": 19,
    "marketing_features": [
      { "name": "Clientes ilimitados" }
    ]
  }'
const response = await fetch('https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001', {
  method: 'PUT',
  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 acelerado.',
    internal_id: 'pro',
    tax_rate: 19,
    marketing_features: [
      { name: 'Clientes ilimitados' }
    ]
  })
});
const data = await response.json();
console.log(data);
import requests

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

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001",
    CURLOPT_CUSTOMREQUEST => "PUT",
    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 acelerado.",
        "internal_id" => "pro",
        "tax_rate" => 19,
        "marketing_features" => [
            ["name" => "Clientes ilimitados"]
        ]
    ])
]);

$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 acelerado.",
  "active": true,
  "internal_id": "pro",
  "unit_label": null,
  "tax_rate": 19,
  "default_price": "9f5d85a0-2222-7000-aaaa-000000000002",
  "marketing_features": [
    { "name": "Clientes ilimitados" }
  ],
  "metadata": null,
  "created_at": "2026-07-13T12:00:00.000000Z",
  "updated_at": "2026-07-13T12:30: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"
}
{
  "message": "No encontrado",
  "code": 10004,
  "code_name": "not_found"
}
Actualiza un producto existente de tu empresa. Acepta los mismos campos que la creación (con name obligatorio). Si el producto no pertenece a tu empresa, la petición retorna un 404.

Headers

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

Path Parameters

id
string
required
ID del producto a actualizar. Crear producto.

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/9f5d85a0-1111-7000-aaaa-000000000001 \
  -X PUT \
  -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 acelerado.",
    "internal_id": "pro",
    "tax_rate": 19,
    "marketing_features": [
      { "name": "Clientes ilimitados" }
    ]
  }'
const response = await fetch('https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001', {
  method: 'PUT',
  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 acelerado.',
    internal_id: 'pro',
    tax_rate: 19,
    marketing_features: [
      { name: 'Clientes ilimitados' }
    ]
  })
});
const data = await response.json();
console.log(data);
import requests

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

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.onepay.la/v1/products/9f5d85a0-1111-7000-aaaa-000000000001",
    CURLOPT_CUSTOMREQUEST => "PUT",
    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 acelerado.",
        "internal_id" => "pro",
        "tax_rate" => 19,
        "marketing_features" => [
            ["name" => "Clientes ilimitados"]
        ]
    ])
]);

$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 acelerado.",
  "active": true,
  "internal_id": "pro",
  "unit_label": null,
  "tax_rate": 19,
  "default_price": "9f5d85a0-2222-7000-aaaa-000000000002",
  "marketing_features": [
    { "name": "Clientes ilimitados" }
  ],
  "metadata": null,
  "created_at": "2026-07-13T12:00:00.000000Z",
  "updated_at": "2026-07-13T12:30: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"
}
{
  "message": "No encontrado",
  "code": 10004,
  "code_name": "not_found"
}