PCI DSS compliant detection and masking of credit card numbers across all major card networks. Protect payment data with 99.99% accuracy and Luhn validation.
PCI DSS Level 1 compliant credit card detection and redaction
Detect Visa, Mastercard, American Express, Discover, JCB, Diners Club, UnionPay, and 15+ regional card types globally.
Every detected card number is validated using the Luhn algorithm to eliminate false positives from random digit sequences.
Achieve and maintain PCI DSS compliance with proper Primary Account Number (PAN) handling and masking requirements.
Detect cards regardless of formatting - with spaces, dashes, dots, or continuous digits. Handle all presentation variations.
Card data never stored. Processing in isolated memory with immediate purge. TLS 1.3 encryption in transit.
Redact cards in receipts, invoices, emails, chat logs, call transcripts, images, and any document type.
Multi-layer validation ensures accuracy and compliance
Identify potential card numbers using IIN/BIN ranges and digit patterns for all major networks.
Validate each candidate using the Luhn algorithm to confirm it's a mathematically valid card number.
Identify the card network (Visa, MC, Amex, etc.) based on IIN/BIN for accurate categorization.
Apply masking showing only first 6 and last 4 digits as permitted by PCI DSS requirements.
Get started with just a few lines of code
import requests
api_key = "your_api_key"
url = "https://api.redactionapi.net/v1/redact"
# Redact credit cards with PCI-compliant masking
data = {
"text": "Payment received: Visa 4532015112830366, Amex 371449635398431",
"redaction_types": ["credit_card"],
"redaction_style": "pci_compliant" # Shows first 6, last 4
}
response = requests.post(url,
headers={"Authorization": f"Bearer {api_key}"},
json=data
)
result = response.json()
print(result["redacted_text"])
# Output: "Payment received: Visa 453201******0366, Amex 371449*****8431"
# Detection includes card network
for detection in result["detections"]:
print(f"Card Network: {detection['card_network']}")
print(f"Valid Luhn: {detection['luhn_valid']}")
const axios = require('axios');
const apiKey = 'your_api_key';
const url = 'https://api.redactionapi.net/v1/redact';
// Full redaction for maximum security
const data = {
text: "Card on file: 5425233430109903 exp 12/25 cvv 123",
redaction_types: ["credit_card", "cvv", "expiry_date"],
redaction_style: "full"
};
axios.post(url, data, {
headers: { 'Authorization': `Bearer ${apiKey}` }
})
.then(response => {
console.log(response.data.redacted_text);
// Output: "Card on file: [CARD_REDACTED] exp [EXPIRY_REDACTED] cvv [CVV_REDACTED]"
// Get PCI compliance report
console.log(response.data.compliance_report);
});
curl -X POST https://api.redactionapi.net/v1/redact \
-H "Authorization: Bearer your_api_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Customer paid with 4111-1111-1111-1111",
"redaction_types": ["credit_card"],
"redaction_style": "last_four",
"include_network": true
}'
# Response:
# {
# "redacted_text": "Customer paid with ****-****-****-1111",
# "detections": [{
# "type": "credit_card",
# "card_network": "Visa",
# "luhn_valid": true,
# "confidence": 99.99
# }]
# }
Credit card numbers, also known as Primary Account Numbers (PANs), represent some of the most sensitive financial data organizations handle. Every year, billions of credit card transactions occur globally, and with them comes the constant challenge of protecting these numbers from unauthorized access. Whether embedded in customer service logs, email communications, transaction records, or document archives, credit card data requires vigilant protection to prevent fraud and maintain compliance with payment card industry standards.
The Payment Card Industry Data Security Standard (PCI DSS) establishes comprehensive requirements for organizations that handle, process, or store credit card information. Failure to comply can result in fines ranging from $5,000 to $100,000 per month, increased transaction fees, and potential loss of the ability to accept card payments. Beyond compliance penalties, a credit card data breach can cost millions in remediation, legal fees, and lost business. This guide provides everything you need to know about properly detecting and redacting credit card numbers to protect your organization and customers.
Credit card numbers follow a specific structure defined by the ISO/IEC 7812 standard. A typical card number consists of 13 to 19 digits, with most major networks using 16 digits. The number is divided into three components: the Issuer Identification Number (IIN), the individual account identifier, and a check digit.
The IIN, formerly known as the Bank Identification Number (BIN), comprises the first six to eight digits and identifies the card network and issuing institution. These digits follow specific patterns: Visa cards begin with 4, Mastercard with 51-55 or 2221-2720, American Express with 34 or 37, Discover with 6011, 644-649, or 65, and so forth. Understanding these patterns enables accurate network identification and helps distinguish valid card numbers from random digit sequences.
The individual account identifier fills the middle section of the card number, uniquely identifying the cardholder's account within the issuing institution. The final digit is a check digit calculated using the Luhn algorithm, which validates the mathematical correctness of the entire number. This structure provides multiple validation points for accurate detection while minimizing false positives.
The Luhn algorithm, also known as the modulus 10 or mod 10 algorithm, serves as a critical validation mechanism for credit card numbers. Developed by IBM scientist Hans Peter Luhn in 1954, this simple checksum formula detects any single-digit error and most transpositions of adjacent digits in card numbers.
The algorithm works by processing the card number from right to left. Starting with the check digit, every second digit is doubled. If doubling results in a number greater than 9, the digits of that number are summed (or equivalently, 9 is subtracted). All digits are then summed together. If the total modulo 10 equals zero, the number is valid according to the Luhn formula.
For detection purposes, Luhn validation dramatically reduces false positives. A random 16-digit sequence has only about a 10% chance of passing Luhn validation. When combined with IIN pattern matching and contextual analysis, our detection achieves 99.99% accuracy with virtually zero false positives. Every detected card number in our system passes Luhn validation, ensuring you never redact legitimate business data that merely resembles a card number.
Accurate card network identification enhances detection accuracy and provides useful metadata for compliance reporting. Each major card network has distinctive IIN ranges that enable reliable identification:
Visa: Cards begin with 4, typically 16 digits but some older cards have 13. Visa is the most widely used network globally with over 3 billion cards in circulation.
Mastercard: Cards begin with 51-55 or 2221-2720, always 16 digits. The 2-series IINs were introduced in 2017 to expand available number space.
American Express: Cards begin with 34 or 37, always 15 digits. Amex cards have a different structure with a 4-digit IIN and 6-digit account number plus check digit.
Discover: Cards begin with 6011, 622126-622925, 644-649, or 65, typically 16 digits. Discover also processes cards from Diners Club International and some JCB cards.
JCB: Cards begin with 3528-3589, typically 16 digits. JCB is primarily used in Japan but accepted at Discover merchants in the US.
Diners Club: Cards begin with 36, 38-39, or 300-305, 14 to 19 digits. Diners Club North America cards now use the Mastercard network.
UnionPay: Cards begin with 62, typically 16-19 digits. UnionPay is the largest card network by transaction volume, primarily in China.
PCI DSS establishes specific requirements for displaying, transmitting, and storing credit card numbers. Understanding these requirements is essential for implementing compliant redaction strategies.
Display Requirements: PCI DSS Requirement 3.3 specifies that the full PAN may only be displayed to users with a legitimate business need. When displayed, the PAN must be masked to show at maximum the first six and last four digits. Our "pci_compliant" redaction style implements this requirement exactly.
Storage Requirements: Requirement 3.4 mandates that stored PANs must be rendered unreadable using strong cryptography, truncation, tokenization, or one-way hashing. Our redaction service supports all these methods, enabling you to choose the approach that best fits your compliance needs.
CVV Prohibition: Requirement 3.2.2 prohibits storage of the card verification code (CVV/CVC/CID) after authorization. These three or four digit codes must always be fully redacted or deleted from any retained records.
Transmission Requirements: All card data must be encrypted during transmission (Requirement 4.1). Our API uses TLS 1.3 exclusively, meeting and exceeding PCI requirements for data in transit.
Selecting the appropriate redaction strategy depends on your specific use case, compliance requirements, and operational needs. RedactionAPI supports multiple approaches:
PCI-Compliant Masking: Shows first six and last four digits (453201******0366). This format is useful when you need to identify the card type and issuer while protecting the full number. Common in customer service applications and transaction logs.
Last Four Display: Shows only the last four digits (************0366 or ****-****-****-0366). This is the most common format for receipts and customer-facing documents, providing minimal information for card identification.
Full Redaction: Complete replacement with placeholder text [CARD_REDACTED]. Use this when the card number serves no purpose in the output document. Required for archival of documents that will be accessed by users without business need.
Tokenization: Replaces the card number with a unique token that can be reversed with proper authorization. Useful for systems that need to reference the original card while maintaining security. Tokens can be format-preserving (same length and structure) or random.
Credit card numbers appear in many formats across different systems and documents. Our detection engine handles all common variations:
Continuous Digits: 4532015112830366 - Common in databases and system logs
Space Separated: 4532 0151 1283 0366 - Standard display format on physical cards
Dash Separated: 4532-0151-1283-0366 - Common in forms and some POS systems
Mixed Formats: 4532 0151-1283.0366 - Found in user-entered data
With Prefixes: "Card: 4532015112830366" or "CC# 4532015112830366" - Common in logs and notes
Regardless of format, our system normalizes the number, validates it, and applies appropriate redaction while preserving the original formatting style in the output. This ensures redacted documents maintain their original appearance while protecting sensitive data.
Credit card numbers can appear in virtually any document type, each presenting unique challenges for detection and redaction:
Customer Service Logs: Chat transcripts, email threads, and call notes often contain card numbers provided by customers. Our real-time API can process these as they're created, ensuring card data is never stored in plain text.
Transaction Records: Payment processing generates numerous records containing card data. Batch processing efficiently redacts historical data while APIs protect new transactions in real-time.
Receipts and Invoices: Physical and digital receipts may contain card numbers in various formats. Our image processing handles printed, handwritten, and digitally rendered card numbers.
Emails: Customers frequently share card numbers via email despite warnings not to. Automated email scanning ensures these are redacted before storage or forwarding.
Databases: Legacy systems may contain unprotected card data. Our batch processing can scan and redact database exports or connect directly for in-place remediation.
Successful credit card redaction implementation requires careful planning and ongoing vigilance. Follow these best practices for optimal results:
Implement at Point of Entry: Redact card data as early as possible in your data flow. Don't wait until data reaches storage - process it immediately upon receipt to minimize exposure.
Scan Existing Data: Historical data may contain unprotected card numbers. Conduct a thorough scan of all data repositories including databases, file shares, email archives, and backup systems.
Include All Data Types: Don't forget related data like CVV codes, expiration dates, and cardholder names. A comprehensive redaction strategy addresses all payment-related PII.
Maintain Audit Trails: PCI DSS requires logging of all access to cardholder data. Our API provides comprehensive audit logs documenting every detection and redaction event.
Test Thoroughly: Validate your implementation with test card numbers (available from card networks) and sample documents before deploying to production. Verify both detection accuracy and proper redaction formatting.
Monitor Continuously: Implement ongoing monitoring to detect card data that may slip through. Regular audits and automated scanning help maintain compliance over time.
RedactionAPI has transformed our document processing workflow. We've reduced manual redaction time by 95% while achieving better accuracy than our previous manual process.
The API integration was seamless. Within a week, we had automated redaction running across all our customer support channels, ensuring GDPR compliance effortlessly.
We process over 50,000 legal documents monthly. RedactionAPI handles it all with incredible accuracy and speed. It's become an essential part of our legal tech stack.
The multi-language support is outstanding. We operate in 30 countries and RedactionAPI handles all our documents regardless of language with consistent accuracy.
Trusted by 500+ enterprises worldwide





We detect cards from all major networks including Visa, Mastercard, American Express, Discover, JCB, Diners Club, UnionPay, Maestro, and regional networks like RuPay (India), Elo (Brazil), Troy (Turkey), and more. Our IIN/BIN database is updated monthly to include new card ranges.
The Luhn algorithm (mod 10) is a checksum formula used to validate card numbers. Every legitimate card number passes Luhn validation. Random 16-digit sequences have only a 10% chance of passing. Combined with IIN/BIN validation and contextual analysis, this virtually eliminates false positives.
PCI DSS allows displaying the first six and last four digits of a PAN (Payment Account Number). We offer this as our "pci_compliant" style. For stricter requirements, we offer last four only, full redaction, and tokenization. All options meet PCI DSS requirements when properly implemented.
No, we never store credit card data. Processing occurs in isolated memory with immediate cryptographic erasure upon completion. Our infrastructure is PCI DSS Level 1 certified, the highest level of certification. We undergo annual audits by a Qualified Security Assessor (QSA).
Yes, our OCR engine extracts text from images, scanned documents, and photos of cards or receipts. Detected card numbers are then validated and visually redacted with black bars, blur, or pixelation. We handle card embossing, printed text, and handwritten numbers.
CVV/CVC/CID codes and expiration dates are detected as separate data types with their own redaction rules. PCI DSS prohibits storing CVV after authorization, so we always recommend full redaction for CVV. Expiration dates can be fully redacted or partially masked based on your requirements.