Il numero di carta è valido?
Questo strumento controlla se un numero di carta rispetta l’algoritmo di Luhn, la formula con cui i circuiti verificano che una sequenza di cifre sia internamente coerente. Ti dice se il numero è plausibile o contiene un errore di battitura. Non conferma fondi, scadenza o titolare.
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Cos’è l’algoritmo di Luhn
Luhn è una formula pubblica che moltiplica e somma le cifre del numero secondo uno schema fisso: se il totale rispetta una certa regola, il numero è internamente coerente. La usano tutti i circuiti — Visa, Mastercard, Amex e gli altri — come primo filtro prima ancora di interrogare la banca. Non prova che la carta sia attiva o reale: prova solo che la sequenza di cifre non contiene un errore banale di trascrizione.
Cosa NON fa questo controllo
Non addebita nulla, non contatta nessuna banca e non salva il numero da nessuna parte: il calcolo avviene nella pagina, sul tuo dispositivo, e finisce lì. Non conferma che la carta abbia fondi disponibili, non sia scaduta o corrisponda al nome del titolare — sono cose che solo il circuito di pagamento sa al momento dell’addebito reale, non prima e non con un semplice controllo di forma come questo.
Come si usa
Incolla il numero, con o senza spazi, ed esegui. Il risultato è valido o no secondo Luhn, insieme al circuito riconosciuto dalle prime cifre quando disponibile. Utile quando devi ribattere a mano un numero letto al telefono o scritto su un modulo cartaceo, per intercettare subito una cifra saltata prima che il tentativo di pagamento venga rifiutato dal gestore, senza dover ripetere l’intero ordine da capo.
Perché serve anche se il pagamento lo gestisce un altro
Anche quando l’incasso passa da PayPal o dal gestore di pagamento del sito, un controllo Luhn lato modulo evita di inviare un tentativo di addebito con un numero palesemente sbagliato, risparmiando un rifiuto inutile e un messaggio d’errore poco chiaro per chi sta comprando, soprattutto su un modulo compilato in fretta da telefono, dove un tocco di troppo sullo schermo è più facile del previsto.
Casi d'uso
Modulo d’ordine con controllo immediato
Sul modulo di pagamento di Tecnoedil Verona S.n.c. un controllo Luhn segnala subito una cifra mancante, prima che l’ordine arrivi al gestore di pagamento e venga rifiutato.
Numero letto al telefono
Un cliente detta il numero della carta al telefono per un ordine B2B. Prima di registrarlo, un controllo rapido conferma che la sequenza sia coerente e non contenga un errore di trascrizione.
Verifica di un modulo cartaceo
Lo Studio Commercialista Bianchi riceve un modulo di autorizzazione firmato a mano con il numero di carta scritto per esteso: un controllo Luhn conferma che la sequenza sia plausibile prima di inoltrarla.
Domande frequenti
Il numero della carta viene salvato da qualche parte?
No, mai. Il calcolo avviene nella pagina, sul tuo dispositivo: il numero non viene inviato a nessun server, non viene registrato e non lascia il browser.
Conferma che la carta abbia fondi o non sia scaduta?
No. Il controllo Luhn verifica solo che la sequenza di cifre sia matematicamente coerente. Fondi, scadenza e stato della carta li conosce soltanto il circuito di pagamento al momento dell’addebito.
Un numero inventato può risultare valido?
Sì, è possibile: Luhn scarta gli errori di battitura più comuni, ma non distingue un numero reale da uno inventato che rispetti per caso la formula. È un filtro di plausibilità, non una prova di esistenza.
Riconosce anche il circuito della carta?
Spesso sì, dalle prime cifre. Se ti serve solo quello, senza il controllo Luhn, c’è uno strumento dedicato al riconoscimento del circuito.
Il controllo Luhn è gratis?
Sì, gratis, senza limiti e senza registrazione: gira interamente nel browser.
Posso usarlo dal telefono?
Sì, dal browser dello smartphone, senza installare niente: incolli il numero, esegui, leggi il risultato.
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/verify/card-luhn \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/verify/card-luhn", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/card-luhn",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/card-luhn", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/card-luhn", 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
{
"items": [
"valor-1",
"valor-2"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.card_luhn",
"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.
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. |