Genere un recibo con totales desglosados
Dos capuchinos con impuesto del 8,25 % y un panecillo exento se convierten en un recibo desglosado con subtotales por línea, impuesto total e importe pagado. A diferencia de una factura, deja constancia de un pago ya recibido. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Nombre del comercio
- Northwind Coffee
- Método de pago
- Visa ending 4242
- Moneda
- USD
- Tipo de documento
- receipt
- Número de recibo
- RCP-05M87BQ
Convierta los datos de una compra en un recibo uniforme sin programar cálculos y formatos en cada aplicación. Indique el comercio, al menos un artículo y el método de pago. El generador calcula subtotales, impuestos y totales, y asigna un número estable.
Prepare todos los datos del recibo
Indique el nombre del comercio tal como debe aparecer y añada cada producto o servicio por separado. Cada línea necesita descripción, cantidad y precio unitario. Puede usar cantidades decimales para mercancías medidas, horas, peso o distancia.
Añada un porcentaje de impuesto solo cuando corresponda. Escriba un método de pago apto para mostrarse, como efectivo, transferencia o una tarjeta enmascarada; nunca incluya credenciales completas. La moneda es opcional y utiliza USD de forma predeterminada.
Las descripciones breves y los datos de pago protegidos facilitan un registro legible. Debe existir al menos una línea, pues una compra vacía no genera un recibo válido.
Comprenda los cálculos y el número
El generador convierte cada precio unitario a unidades monetarias menores antes de multiplicarlo por la cantidad. Así evita artefactos de coma flotante. Redondea cada subtotal y calcula después su impuesto.
El subtotal general suma las líneas, el impuesto total suma sus impuestos y el total final combina ambos valores. El importe pagado coincide siempre con ese total. El número de recibo se deriva de los datos normalizados, por lo que una solicitud idéntica devuelve el mismo identificador.
Esto ayuda con reintentos y duplicados. No obstante, no sustituye una secuencia fiscal oficial ni un contador contable exigido por la legislación aplicable.
Integre el documento estructurado
La respuesta separa identidad, comercio, líneas calculadas, pago y totales. Puede renderizar un recibo imprimible, archivar una compra normalizada, completar un correo o alimentar un generador de PDF. Guarde la respuesta junto con la petición original para facilitar conciliaciones.
El número estable sirve como clave práctica, aunque su base de datos debe imponer sus propias reglas. Las entradas incompletas o inválidas se rechazan expresamente; no se inventan datos. El servicio no usa red, almacenamiento, fecha actual ni aleatoriedad, por lo que el resultado permanece estable.
Qué puede hacer con ella
Cree un recibo de pedido
Convierta artículos y un método de pago enmascarado en un registro uniforme para guardar o mostrar.
Prepare datos para un PDF
Calcule líneas y totales fiables antes de enviar los datos estructurados a un renderizador de PDF.
Normalice ventas manuales
Convierta registros de caja o administración en un esquema previsible para conciliación y soporte.
Preguntas frecuentes
¿Puedo generar un recibo sin artículos?
No. Se exige al menos una línea; una lista vacía produce un error de entrada inválida.
¿Cómo se calculan los impuestos?
Se calculan por línea sobre su subtotal redondeado y luego se suman.
¿El número de recibo es aleatorio?
No. Se deriva de los datos normalizados; entradas idénticas producen el mismo número.
¿Crea una factura fiscal válida?
No. Crea un recibo estructurado; usted debe cumplir las normas locales de numeración y registro.
¿Puedo poner cantidades con decimales?
Sí. La cantidad admite decimales, algo útil para productos por peso, horas de trabajo o distancias. Cada línea se multiplica y se redondea a la unidad más pequeña de la moneda antes de aplicar el impuesto.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/doc/receipt-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"merchant_name":"Northwind Coffee","line_items":[{"description":"Cappuccino","quantity":2,"unit_price":4.5,"tax_rate":8.25},{"description":"Blueberry muffin","quantity":1,"unit_price":3.25}],"payment_method":"Visa ending 4242"}'const res = await fetch("https://api.kit.forhosting.com/doc/receipt-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"merchant_name": "Northwind Coffee",
"line_items": [
{
"description": "Cappuccino",
"quantity": 2,
"unit_price": 4.5,
"tax_rate": 8.25
},
{
"description": "Blueberry muffin",
"quantity": 1,
"unit_price": 3.25
}
],
"payment_method": "Visa ending 4242"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/receipt-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"merchant_name": "Northwind Coffee",
"line_items": [
{
"description": "Cappuccino",
"quantity": 2,
"unit_price": 4.5,
"tax_rate": 8.25
},
{
"description": "Blueberry muffin",
"quantity": 1,
"unit_price": 3.25
}
],
"payment_method": "Visa ending 4242"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/receipt-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"merchant_name":"Northwind Coffee","line_items":[{"description":"Cappuccino","quantity":2,"unit_price":4.5,"tax_rate":8.25},{"description":"Blueberry muffin","quantity":1,"unit_price":3.25}],"payment_method":"Visa ending 4242"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"merchant_name":"Northwind Coffee","line_items":[{"description":"Cappuccino","quantity":2,"unit_price":4.5,"tax_rate":8.25},{"description":"Blueberry muffin","quantity":1,"unit_price":3.25}],"payment_method":"Visa ending 4242"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/receipt-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"merchant_name": "Northwind Coffee",
"line_items": [
{
"description": "Cappuccino",
"quantity": 2,
"unit_price": 4.5,
"tax_rate": 8.25
},
{
"description": "Blueberry muffin",
"quantity": 1,
"unit_price": 3.25
}
],
"payment_method": "Visa ending 4242"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.receipt_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
max_pages | 200 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
El JSON resultante puede guardarse, mostrarse, vincularse a un pedido o enviarse a otro flujo documental.
Integre el documento estructurado
Cada solicitud cuesta $0.002 y resulta adecuada para flujos transaccionales pequeños y previsibles.
Preguntas técnicas
¿Cuánto cuesta?
Cada solicitud de API cuesta $0.002.