Kreditkartennummer prüfen
Ein Werkzeug, das eine eingegebene Kreditkartennummer mit dem Luhn-Algorithmus auf eine gültige Prüfziffer testet. Es erkennt einen einzelnen vertippten oder vertauschten Ziffer, bevor eine Zahlung überhaupt versucht wird, speichert die Nummer dabei aber zu keinem Zeitpunkt in einem Konto oder Protokoll.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Was der Luhn-Algorithmus prüft
Der Luhn-Algorithmus ist ein einfaches, weltweit genutztes Prüfverfahren, das aus den Ziffern einer Kartennummer eine Prüfsumme berechnet und mit der letzten Ziffer der Nummer abgleicht. Ein einzelner vertippter oder zwei vertauschte Ziffern führen fast immer zu einer ungültigen Prüfsumme und werden so zuverlässig erkannt, ohne dass die Karte bei einer Bank oder einem Zahlungsdienstleister angefragt werden muss, was die Prüfung besonders schnell macht.
Was diese Prüfung ausdrücklich nicht tut
Eine gültige Prüfsumme bedeutet nicht, dass die Karte aktiv, gedeckt oder überhaupt jemals ausgegeben wurde, der Luhn-Algorithmus prüft nur die rechnerische Struktur der Nummer. Ob eine Karte tatsächlich belastet werden kann, entscheidet ausschließlich der Zahlungsdienstleister im Moment der Zahlung, nicht diese Funktion, die sich bewusst auf die reine Prüfziffernkontrolle beschränkt und keine weitergehende Aussage über Deckung, Sperrung oder Gültigkeitsdatum trifft.
Keine Speicherung, kein Protokoll
Die Prüfung läuft vollständig im Browser: Die eingegebene Nummer wird lokal ausgewertet, nicht an einen Server übertragen, nicht protokolliert und nicht gespeichert, auch nicht bei Nutzung über die API, bei der ausschließlich das Prüfergebnis zurückgegeben wird. Für den Betrieb im Browser gibt es kein Limit und keine Anmeldung; die API-Nutzung kostet $0.002 pro Prüfung, mit dem Preis vorab veröffentlicht wie bei jeder Funktion in KIT.
Anwendungsfälle
Formularfeld beim Checkout absichern
Ein Onlineshop prüft die eingegebene Kartennummer vor dem Absenden auf eine gültige Prüfziffer, um offensichtliche Tippfehler früh abzufangen.
Interne Testdaten erzeugen
Ein Entwickler nutzt die Prüfung, um beim Testen des eigenen Zahlungsformulars schnell zu prüfen, ob eine Testnummer überhaupt eine gültige Luhn-Prüfsumme hat.
Rückfrage im Kundenservice
Sabine Schneider prüft am Telefon mit dem Kunden, ob eine vorgelesene Kartennummer plausibel aufgebaut ist, bevor ein neuer Zahlungsversuch angestoßen wird.
Häufige Fragen
Wird meine Kartennummer gespeichert oder protokolliert?
Nein, zu keinem Zeitpunkt. Weder im Browser-Modus noch bei Nutzung über die API wird die Nummer gespeichert, protokolliert oder weiterübertragen, nur das Prüfergebnis wird zurückgegeben.
Bedeutet eine gültige Prüfsumme, dass die Karte gedeckt ist?
Nein, der Luhn-Algorithmus prüft nur die rechnerische Struktur der Nummer, nicht die Deckung oder Aktivität der Karte. Das kann ausschließlich der Zahlungsdienstleister im Zahlungsmoment feststellen.
Ist die Prüfung kostenlos?
Ja, im Browser ohne Limit und ohne Anmeldung. Nur die API-Nutzung kostet $0.002 pro Prüfung.
Ist das für die Verarbeitung echter Kartendaten DSGVO-relevant?
Die Nummer verlässt im Browser-Modus Ihr Gerät nicht und wird nicht gespeichert, was das Risiko deutlich reduziert. Für die produktive Zahlungsabwicklung selbst bleibt weiterhin ein zertifizierter Zahlungsdienstleister nötig.
Erkennt die Prüfung auch den Kartentyp?
Nein, dafür gibt es eine eigene Funktion. Diese Prüfung testet ausschließlich die Luhn-Prüfziffer.
Brauche ich ein Konto?
Nein, weder für den Browser-Modus noch für die API-Nutzung ist ein Konto erforderlich.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"items": [
"valor-1",
"valor-2"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.card_luhn",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |