Payment Processing Architecture for High-Volume Merchants
·ScaledByDesign·
paymentsarchitecturee-commerceinfrastructure
The Payment Tax You Don't Know You're Paying
Most merchants treat payment processing as a commodity. Plug in Stripe, done. That works at $1M/year. At $10M+, the difference between a good and bad payment architecture is $200K-500K annually in declined transactions, unnecessary fees, and lost revenue.
The Three Problems at Scale
Problem 1: Decline Rates Are Higher Than You Think
Typical merchant decline breakdown:
Successful: 85%
Soft declines (retriable): 8%
Hard declines (card invalid): 4%
Fraud blocks (false positives): 3%
That 15% failure rate on $10M = $1.5M in lost revenue.
Industry best practice: 92-95% success rate.
The gap is $200-500K in recoverable revenue.
Problem 2: You're Overpaying on Processing Fees
Standard Stripe pricing: 2.9% + $0.30 per transaction
On $10M annual volume:
Total fees: $320,000
With optimized interchange routing:
Qualifying for Level 2/3 data: 2.2% + $0.10 average
Total fees: $230,000
Savings: $90,000/year — just from sending better data
Problem 3: Single Point of Failure
When Stripe has an outage (and they do):
- Every transaction fails
- Cart abandonment spikes to 95%+
- Revenue loss: $2K-50K per hour depending on volume
With multi-processor failover:
- Primary processor down → automatic failover to secondary
- Customer never notices
- Revenue loss: near zero
The Architecture
Layer 1: Payment Orchestration
// Payment orchestration layer — route to optimal processor
interface PaymentRequest {
amount: number;
currency: string;
cardBrand: string; // visa, mastercard, amex
cardCountry: string; // issuing country
isRecurring: boolean;
merchantCategory: string;
level2Data?: Level2Data; // For B2B/corporate cards
}
function routePayment(request: PaymentRequest): ProcessorConfig {
// Route based on optimization rules
const rules: RoutingRule[] = [
// Amex: Route to Amex direct (lower fees than via Stripe)
{ condition: (r) => r.cardBrand === "amex",
processor: "amex_direct", reason: "Lower interchange" },
// International cards: Route to processor with local acquiring
{ condition: (r) => r.cardCountry !== "US",
processor: "adyen", reason: "Local acquiring reduces declines" },
// Recurring/subscription: Route to processor with network tokens
{ condition: (r) => r.isRecurring,
processor: "stripe", reason: "Network token support" },
// High-value B2B: Route with Level 2/3 data for lower rates
{ condition: (r) => r.amount > 500 && r.level2Data,
processor: "stripe", reason: "Level 2/3 data support" },
// Default
{ condition: () => true,
processor: "stripe", reason: "Default processor" },
];
return rules.find(r => r.condition(request))!;
}Layer 2: Smart Retry Logic
Not all declines are final. Smart retries recover 30-50%
of soft declines:
Soft decline (retriable):
- Insufficient funds → Retry in 24h, then 72h
- Processor timeout → Retry immediately on backup processor
- Rate limit → Retry in 60 seconds
- Generic decline → Retry once with different processor
Hard decline (do not retry):
- Card stolen/lost → Do not retry, flag account
- Invalid card number → Do not retry, request new card
- Expired card → Send card update request, then retry
Network errors:
- Timeout → Retry immediately on backup processor
- Connection refused → Failover to secondary processor
- 500 error → Retry with exponential backoff (1s, 2s, 4s)
Layer 3: Fraud Prevention That Doesn't Kill Conversion
The fraud paradox:
Too strict: Block 5% of legitimate orders ($500K lost revenue)
Too loose: Accept 2% fraud ($200K in chargebacks)
Just right: Block fraud, approve good orders (requires nuance)
Layered approach:
1. Device fingerprinting (passive, no customer friction)
2. Velocity checks (3+ orders from same IP in 1 hour)
3. Address verification (AVS match)
4. 3D Secure (only for high-risk transactions)
5. Manual review queue (for orders flagged but not blocked)
Key: 3D Secure should be ADAPTIVE, not universal.
Low-risk orders: Skip 3D Secure (no friction)
Medium-risk: Request 3D Secure (shifts liability)
High-risk: Block and flag for review
Layer 4: Multi-Processor Failover
// Automatic failover when primary processor is down
async function processPayment(request: PaymentRequest): Promise<PaymentResult> {
const processors = getProcessorPriority(request);
for (const processor of processors) {
try {
const result = await processor.charge(request);
if (result.success) return result;
if (result.isHardDecline) return result; // Don't retry on hard decline
// Soft decline — try next processor
continue;
} catch (error) {
// Processor error — failover to next
logFailover(processor.name, error);
continue;
}
}
return { success: false, reason: "All processors failed" };
}Optimizing Interchange
Interchange fees vary by card type and data quality:
Standard consumer Visa: 1.65% + $0.10
Rewards consumer Visa: 1.95% + $0.10
Corporate Visa: 2.50% + $0.10
Corporate Visa (Level 2): 2.10% + $0.10 ← $0.40 savings per $100
Corporate Visa (Level 3): 1.90% + $0.10 ← $0.60 savings per $100
Level 2 data (send with every B2B transaction):
- Tax amount
- Customer reference number
- Merchant postal code
Level 3 data (for large B2B transactions):
- Line item details
- Quantity and unit cost
- Commodity codes
- Ship-to postal code
Most merchants don't send Level 2/3 data.
Sending it costs nothing and saves 20-30% on B2B interchange.
The Dashboard
Daily Payment Health:
Authorization Rate: 93.2% (target: > 92%)
├── Approved: 93.2%
├── Soft declined (retried): 3.1% (recovered 1.8%)
├── Hard declined: 2.5%
└── Fraud blocked: 1.2%
Processing Costs:
├── Effective rate: 2.35% (down from 2.9%)
├── Savings from interchange optimization: $7,200 MTD
├── Savings from Amex direct routing: $2,100 MTD
└── Projected annual savings: $112,000
Failover Events:
├── This month: 2 events
├── Avg failover duration: 3.2 seconds
├── Revenue protected: $14,200
└── Customer impact: None detected ✅
Fraud:
├── Fraud rate: 0.08% (below 0.1% threshold)
├── Chargeback rate: 0.04% (well below 1% Visa threshold)
├── False positive rate: 0.6% (target: < 1%)
└── Manual review queue: 12 orders (avg resolution: 4 hours)
Implementation Priority
Month 1: Add smart retry logic
→ Recover 30-50% of soft declines
→ ROI: $40-80K/year on $10M volume
Month 2: Add Level 2/3 interchange data
→ Reduce processing fees on B2B transactions
→ ROI: $30-90K/year depending on B2B mix
Month 3: Multi-processor failover
→ Eliminate single point of failure
→ ROI: Prevents $2-50K per outage event
Month 4: Adaptive fraud rules
→ Reduce false positives while maintaining fraud prevention
→ ROI: $50-200K/year in recovered false declines
Payment infrastructure is the most under-optimized system in most e-commerce businesses. Every percentage point of authorization rate improvement at $10M volume is $100K in revenue. Every 0.1% reduction in processing fees is $10K/year. The math makes this the highest-ROI infrastructure investment you can make.