Generi una ricevuta con totali dettagliati
Trasformi i dati di acquisto in una ricevuta uniforme senza ricreare calcoli e formattazione in ogni applicazione.
Esegui gratis nel browser
Indichi l’esercente, almeno un articolo e il metodo di pagamento. Il generatore calcola subtotali, imposte e totale, quindi assegna un numero stabile. Il JSON risultante può essere archiviato, visualizzato, collegato a un ordine o inviato a un altro flusso documentale.
Prepari tutti i dati della ricevuta
Inserisca il nome dell’esercente come deve apparire e aggiunga separatamente ogni prodotto o servizio. Ogni riga richiede descrizione, quantità e prezzo unitario. Le quantità decimali sono adatte a merci misurate, ore, peso o distanza. Indichi un’aliquota solo per le righe tassabili. Usi un metodo di pagamento mostrabile, come contanti, bonifico o carta mascherata, senza fornire credenziali complete. La valuta è facoltativa e il valore predefinito è USD. Descrizioni concise e dati protetti rendono il documento leggibile. Occorre almeno una riga, perché un acquisto vuoto non può produrre una ricevuta significativa.
Comprenda calcoli e numerazione
Il generatore converte ogni prezzo in unità monetarie minori prima di moltiplicarlo per la quantità, evitando artefatti in virgola mobile. Arrotonda ciascun subtotale e calcola poi la relativa imposta. Il subtotale generale somma le righe, l’imposta totale somma le imposte e il totale finale combina entrambi. L’importo pagato coincide sempre con il risultato. Il numero deriva dai dati normalizzati: una richiesta identica restituisce lo stesso identificatore, utile per tentativi ripetuti e duplicati. Non sostituisce però una sequenza fiscale ufficiale, un’autorizzazione pubblica o una numerazione contabile imposta dalla normativa.
Inserisca il documento nel flusso
La risposta separa identità, esercente, righe calcolate, pagamento e totali. Può quindi creare una ricevuta stampabile, archiviare un acquisto normalizzato, compilare un messaggio o alimentare un generatore di PDF. Conservi la risposta con la richiesta originale per agevolare la riconciliazione. Il numero stabile è un riferimento utile, ma il database deve applicare regole proprie. Gli input incompleti vengono rifiutati esplicitamente, senza inventare dati. Non vengono usati rete, archiviazione, data corrente o casualità, quindi i risultati sono ripetibili. Ogni richiesta costa $0.002 ed è adatta a piccoli flussi transazionali che richiedono dati prevedibili.
Casi d'uso
Crei una ricevuta d’ordine
Converta articoli e un pagamento mascherato in un registro uniforme da conservare o mostrare.
Prepari i dati per un PDF
Calcoli righe e totali affidabili prima di inviare i dati strutturati a un generatore PDF.
Normalizzi le vendite manuali
Trasformi registrazioni di cassa o amministrative in uno schema prevedibile per riconciliazione e assistenza.
Domande frequenti
Quanto costa?
Ogni richiesta API costa $0.002.
Posso generare una ricevuta senza articoli?
No. Serve almeno una riga; un elenco vuoto produce un errore di input non valido.
Come vengono calcolate le imposte?
Sono calcolate per ogni riga sul subtotale arrotondato e poi sommate.
Il numero della ricevuta è casuale?
No. Deriva dai dati normalizzati; input identici producono lo stesso numero.
Viene creata una fattura fiscale valida?
No. Lei deve rispettare autonomamente le regole locali di numerazione e registrazione.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"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"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.receipt_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
max_pages | 200 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |