Precios de oferta del Merchant
Gestiona las variantes de precio de las ofertas de un merchant — crea precios en distintas monedas, define el predeterminado y elimina o restaura uno de forma reversible.
Un precio de oferta (offer price) es el valor de una oferta en una moneda: un importe en unidades menores enteras (integer minor units) más su moneda ISO 4217. Una oferta puede tener varios precios para que el mismo plan se venda en varios mercados.
Un precio por oferta es el predeterminado (default) — el que se usa cuando un cobro no indica un precio específico. Los precios se eliminan de forma reversible (soft-delete), de modo que un precio todavía referenciado por una suscripción activa puede restaurarse en lugar de perderse.
Estos endpoints dan soporte a la interfaz del Tokeflow Dashboard. Están autenticados por sesión (JWT bearer) — el token proviene de iniciar sesión en el Dashboard, no de una clave de API sk_/pk_. Las solicitudes también llevan el header x-merchant-id que identifica al merchant en contexto, y el usuario autenticado debe ser miembro con acceso a él.
El objeto offer price
Devuelto por los endpoints de listado y consulta de esta página.
| Campo | Tipo | Descripción |
|---|---|---|
id | string | — |
offer_id | string | — |
currency | string | Código de moneda ISO 4217. |
amount | number | Importe en unidades menores (centavos). |
first_charge_amount | number | null | Importe del primer ciclo en unidades menores (se usa cuando offer.setup_charge = true). 0 = validación de tarjeta. |
is_default | boolean | — |
created_at | string | (ISO 8601 UTC). |
updated_at | string | (ISO 8601 UTC). |
Endpoints
DELETE/api/v1/merchant/offer-prices/:id
Auth: Dashboard session (JWT bearer). Merchant membership required.
Elimina un precio de oferta de forma reversible (soft-delete).
Parámetros de ruta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X DELETE https://api.tokeflow.com/api/v1/merchant/offer-prices/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9"Ejemplo de respuesta — 204 No Content
Se devuelve un cuerpo vacío en caso de éxito.
GET/api/v1/merchant/offer-prices/:id
Auth: Dashboard session (JWT bearer). Merchant membership required.
Obtiene un precio de oferta por ID.
Parámetros de ruta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl https://api.tokeflow.com/api/v1/merchant/offer-prices/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9"Ejemplo de respuesta — 200
{
"id": "opr_b1c2d3e4f5",
"offer_id": "ofr_a1b2c3d4e5",
"currency": "BRL",
"amount": 9900,
"first_charge_amount": 0,
"is_default": true,
"created_at": "2026-05-19T12:00:00Z",
"updated_at": "2026-05-19T12:00:00Z"
}PATCH/api/v1/merchant/offer-prices/:id
Auth: Dashboard session (JWT bearer). Merchant membership required.
Actualiza un precio de oferta.
Parámetros de ruta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X PATCH https://api.tokeflow.com/api/v1/merchant/offer-prices/obj_1a2b3c4d \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
-H "Content-Type: application/json" \
-d '{}'Ejemplo de respuesta — 200
{
"id": "opr_b1c2d3e4f5",
"offer_id": "ofr_a1b2c3d4e5",
"currency": "BRL",
"amount": 9900,
"first_charge_amount": 0,
"is_default": true,
"created_at": "2026-05-19T12:00:00Z",
"updated_at": "2026-05-19T12:00:00Z"
}POST/api/v1/merchant/offer-prices/:id/restore
Auth: Dashboard session (JWT bearer). Merchant membership required.
Restaura un precio de oferta eliminado de forma reversible.
Parámetros de ruta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/merchant/offer-prices/obj_1a2b3c4d/restore \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9"Ejemplo de respuesta — 201
{
"id": "opr_b1c2d3e4f5",
"offer_id": "ofr_a1b2c3d4e5",
"currency": "BRL",
"amount": 9900,
"first_charge_amount": 0,
"is_default": true,
"created_at": "2026-05-19T12:00:00Z",
"updated_at": "2026-05-19T12:00:00Z"
}GET/api/v1/merchant/offers/:offerId/prices
Auth: Dashboard session (JWT bearer). Merchant membership required.
Lista los precios de una oferta.
Parámetros de ruta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
offerId | string | Sí | — |
Parámetros de consulta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
page | number | No | Número de página (indexado desde 1). Predeterminado 1, mín. 1. |
limit | number | No | Número de elementos por página. Predeterminado 20, mín. 1, máx. 100. |
currency | string | No | Código de moneda ISO 4217 |
is_default | boolean | No | Filtra solo por el precio predeterminado |
Ejemplo de solicitud
curl -G https://api.tokeflow.com/api/v1/merchant/offers/ofr_5e2b8c14/prices \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
--data-urlencode "page=1" \
--data-urlencode "limit=20" \
--data-urlencode "currency=BRL" \
--data-urlencode "is_default=True"Ejemplo de respuesta — 200
{
"data": [
{
"id": "opr_b1c2d3e4f5",
"offer_id": "ofr_a1b2c3d4e5",
"currency": "BRL",
"amount": 9900,
"first_charge_amount": 0,
"is_default": true,
"created_at": "2026-05-19T12:00:00Z",
"updated_at": "2026-05-19T12:00:00Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 42,
"total_pages": 3,
"has_next": true,
"has_prev": false
}
}POST/api/v1/merchant/offers/:offerId/prices
Auth: Dashboard session (JWT bearer). Merchant membership required.
Agrega un precio a una oferta.
Parámetros de ruta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
offerId | string | Sí | — |
Campos de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
currency | string | Sí | Código de moneda ISO 4217. |
amount | number | Sí | Importe en unidades menores (centavos). Ej: R$99,00 = 9900. |
first_charge_amount | number | No | Importe del primer ciclo en unidades menores. Se usa cuando offer.setup_charge = true. 0 = validación de tarjeta. |
is_default | boolean | No | Moneda predeterminada de esta oferta. |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/merchant/offers/ofr_5e2b8c14/prices \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "x-merchant-id: mrc_8a3f12d9" \
-H "Content-Type: application/json" \
-d '{
"currency": "BRL",
"amount": 9900,
"first_charge_amount": 0,
"is_default": true
}'Ejemplo de respuesta — 201
{
"id": "opr_b1c2d3e4f5",
"offer_id": "ofr_a1b2c3d4e5",
"currency": "BRL",
"amount": 9900,
"first_charge_amount": 0,
"is_default": true,
"created_at": "2026-05-19T12:00:00Z",
"updated_at": "2026-05-19T12:00:00Z"
}Errores
Los errores usan el sobre estándar. Los casos más comunes aquí:
| HTTP | Significado |
|---|---|
400 | Parámetros inválidos o un estado que no permite esta operación. |
401 | Token de sesión del Dashboard ausente, expirado o inválido. |
403 | Autenticado, pero el usuario autenticado no tiene acceso a esta entidad. |
404 | El registro no existe o no es visible para esta entidad. |