- Create Economist SubmissionTracking package correctly: * mainArticle = full blog post content * coverLetter = 216-word SIR— letter * Links to blog post via blogPostId - Archive 'Letter to The Economist' from blog posts (it's the cover letter) - Fix date display on article cards (use published_at) - Target publication already displaying via blue badge Database changes: - Make blogPostId optional in SubmissionTracking model - Economist package ID: 68fa85ae49d4900e7f2ecd83 - Le Monde package ID: 68fa2abd2e6acd5691932150 Next: Enhanced modal with tabs, validation, export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
292 lines
7.7 KiB
Markdown
292 lines
7.7 KiB
Markdown
# CRITICAL: Stripe Bank Account Configuration Bug
|
|
|
|
**Date**: 2025-10-21
|
|
**Priority**: 🚨 CRITICAL
|
|
**Impact**: Payouts to incorrect bank account
|
|
**Status**: Investigation in progress
|
|
|
|
---
|
|
|
|
## Issue Summary
|
|
|
|
**User Report**:
|
|
- Correct bank account: `15-3959-xxxxx36-085`
|
|
- Stripe displays: `••••0085 / 153959`
|
|
- Problem: Extra '0' added (should be `085` not `0085`)
|
|
- Cannot confirm edit in Stripe Dashboard
|
|
|
|
**Impact**:
|
|
- Payouts may fail or go to wrong account
|
|
- User's $5 test transaction already processed
|
|
- Payout scheduled but may fail due to incorrect account number
|
|
|
|
---
|
|
|
|
## Root Cause Analysis
|
|
|
|
### Where This Configuration Lives
|
|
|
|
**NOT in your website code** - Bank account configuration is stored in:
|
|
- Stripe Dashboard → Settings → Bank accounts and scheduling
|
|
- This is configured directly in Stripe's system
|
|
- Your website code (Koha) doesn't touch this
|
|
|
|
### How the Bug Likely Occurred
|
|
|
|
**NZ Bank Account Format**: `XX-XXXX-XXXXXXX-XXX`
|
|
- Branch: 15
|
|
- Account: 3959
|
|
- Suffix: (hidden in your report)
|
|
- Last digits: 085
|
|
|
|
**Stripe's Interpretation**:
|
|
- Stripe may have parsed: `153959xxxxx36085`
|
|
- Then formatted as: `153959` / `0085` (added leading zero)
|
|
- This is a Stripe dashboard parsing bug for NZ bank accounts
|
|
|
|
### Why Edit Doesn't Work
|
|
|
|
When you click [Edit] in Stripe Dashboard:
|
|
1. Form opens with current (incorrect) value
|
|
2. You enter correct value
|
|
3. Form saves and returns to summary
|
|
4. **But**: No visual confirmation that edit was saved
|
|
5. **And**: Stripe may be re-parsing the number incorrectly again
|
|
|
|
---
|
|
|
|
## Immediate Action Required
|
|
|
|
### Step 1: Verify Current Bank Account in Stripe
|
|
|
|
**Log into Stripe Dashboard**:
|
|
1. Go to https://dashboard.stripe.com
|
|
2. Navigate to: Settings → Bank accounts and scheduling
|
|
3. Check what Stripe has on file
|
|
|
|
**Expected to see**:
|
|
```
|
|
Bank: TSB Bank
|
|
Account: ••••0085 / 153959
|
|
```
|
|
|
|
**Need to verify**:
|
|
- Is the routing number (153959) correct?
|
|
- Is the account number suffix (0085 vs 085) correct?
|
|
|
|
### Step 2: Correct Format for NZ Bank Accounts
|
|
|
|
**NZ Bank Account Components**:
|
|
```
|
|
Bank code: 15 (TSB Bank)
|
|
Branch: 3959
|
|
Account base: xxxxx36
|
|
Suffix: 085
|
|
```
|
|
|
|
**Stripe Format** (varies by country):
|
|
- Routing number: Typically `bank-branch` (15-3959 = 153959)
|
|
- Account number: Typically `base-suffix` (xxxxx36-085)
|
|
|
|
**Your issue**: Suffix should be `085` not `0085`
|
|
|
|
### Step 3: Fix in Stripe Dashboard
|
|
|
|
**Method 1: Edit Existing**
|
|
1. Stripe Dashboard → Settings → Bank accounts
|
|
2. Click "Edit" on the TSB Bank account
|
|
3. **Carefully enter**:
|
|
- Bank code: 15
|
|
- Branch: 3959
|
|
- Account number: xxxxx36
|
|
- Suffix: 085 (NOT 0085)
|
|
4. Click "Save"
|
|
5. **Verify**: Does it show correctly after save?
|
|
|
|
**Method 2: Delete and Re-add**
|
|
1. Delete the incorrect bank account
|
|
2. Click "Add bank account"
|
|
3. Select country: New Zealand
|
|
4. Bank: TSB Bank
|
|
5. Enter account number in NZ format: `15-3959-xxxxx36-085`
|
|
6. Let Stripe parse it
|
|
7. **Verify before saving**: Check preview is correct
|
|
|
|
### Step 4: Test Payout (Critical)
|
|
|
|
After correcting:
|
|
1. Stripe Dashboard → Balance → Manual payout
|
|
2. Request payout of small amount (e.g., $1)
|
|
3. **Monitor**: Does it arrive in correct account within 2-3 business days?
|
|
4. If it fails: Stripe will email you with error details
|
|
|
|
---
|
|
|
|
## Why This is Critical
|
|
|
|
### Current Situation
|
|
|
|
**Your $5 test transaction**:
|
|
- Status: Succeeded (Oct 18)
|
|
- Stripe balance: $4.56 (after fees)
|
|
- Payout: Scheduled but delayed by Labour Day bank holiday
|
|
- **Risk**: Will attempt payout to account `0085` instead of `085`
|
|
|
|
### If Payout Fails
|
|
|
|
Stripe will:
|
|
1. Return funds to Stripe balance
|
|
2. Email you about failed payout
|
|
3. Mark bank account as "verification needed"
|
|
4. Require you to fix and retry
|
|
|
|
### If Payout Succeeds to Wrong Account
|
|
|
|
**This is unlikely** because:
|
|
- Invalid account numbers usually get rejected by bank
|
|
- Bank will return funds to Stripe
|
|
- But: Small risk of funds going to wrong account if `0085` exists
|
|
|
|
---
|
|
|
|
## How to Verify the Fix Worked
|
|
|
|
### After Editing Bank Account
|
|
|
|
1. **Visual Check** (Stripe Dashboard):
|
|
- Settings → Bank accounts
|
|
- Should show: `••••085 / 153959` (NOT `••••0085`)
|
|
|
|
2. **Micro-Deposit Test** (if Stripe offers it):
|
|
- Some regions: Stripe sends 2 small deposits to verify
|
|
- You confirm amounts to verify account ownership
|
|
- Not always available in NZ
|
|
|
|
3. **Small Payout Test**:
|
|
- Request manual payout of $1-5
|
|
- Check it arrives in your TSB account
|
|
- Confirms routing and account number are correct
|
|
|
|
---
|
|
|
|
## Long-Term Fix
|
|
|
|
### For Future Transactions
|
|
|
|
1. **Correct bank account** in Stripe Dashboard
|
|
2. **Test with small payout** before large transactions
|
|
3. **Monitor email** for Stripe payout notifications
|
|
4. **Enable 2FA** on Stripe account (prevents unauthorized changes)
|
|
|
|
### For This Transaction
|
|
|
|
Your $5 test payment:
|
|
- Already succeeded (money left your card)
|
|
- Payout to bank scheduled
|
|
- **Watch for**:
|
|
- Payout success email from Stripe
|
|
- Money arriving in TSB account
|
|
- Or: Payout failure email (then you know to fix)
|
|
|
|
---
|
|
|
|
## Technical Details (For Developers)
|
|
|
|
### NZ Bank Account Format
|
|
|
|
**Standard**: `XX-XXXX-XXXXXXX-XXX`
|
|
- Bank (2 digits): 15 = TSB Bank
|
|
- Branch (4 digits): 3959
|
|
- Base (7 digits): xxxxx36
|
|
- Suffix (3 digits): 085
|
|
|
|
**Stripe expects** (varies by integration):
|
|
- Routing number: 153959 (bank + branch)
|
|
- Account number: xxxxx36085 (base + suffix)
|
|
|
|
**Leading Zero Issue**:
|
|
- Suffix `085` should NOT become `0085`
|
|
- Stripe dashboard may be adding leading zero incorrectly
|
|
- This is a Stripe parsing bug for NZ accounts
|
|
|
|
### Not a Code Issue
|
|
|
|
Your website code (Koha donation form) does NOT:
|
|
- ❌ Store bank account numbers
|
|
- ❌ Configure payout settings
|
|
- ❌ Handle bank account validation
|
|
|
|
Stripe API handles:
|
|
- ✅ Creating checkout sessions (what Koha does)
|
|
- ✅ Processing payments (Stripe's responsibility)
|
|
- ✅ Sending payouts (configured in Stripe Dashboard)
|
|
|
|
**This bug is in Stripe's dashboard configuration, not your code.**
|
|
|
|
---
|
|
|
|
## Immediate Checklist
|
|
|
|
- [ ] Log into Stripe Dashboard
|
|
- [ ] Navigate to Settings → Bank accounts
|
|
- [ ] Click "Edit" on TSB Bank account
|
|
- [ ] Verify suffix is `085` not `0085`
|
|
- [ ] If wrong: Correct to `085`
|
|
- [ ] Save and verify change persists
|
|
- [ ] Request test payout of $1
|
|
- [ ] Monitor for payout arrival (2-3 business days)
|
|
- [ ] Enable 2FA on Stripe account
|
|
- [ ] Enable payout notification emails
|
|
|
|
---
|
|
|
|
## Support Resources
|
|
|
|
**If you can't fix in dashboard**:
|
|
1. Contact Stripe Support: https://support.stripe.com
|
|
2. Chat with Stripe: Dashboard → Help → Chat
|
|
3. Explain: "NZ bank account suffix showing 0085 instead of 085"
|
|
4. Reference: TSB Bank account ending in 085
|
|
|
|
**Stripe Support can**:
|
|
- Manually correct your bank account details
|
|
- Verify the account format is correct
|
|
- Help process test payout to verify
|
|
- Investigate why edit doesn't persist
|
|
|
|
---
|
|
|
|
## Status Updates
|
|
|
|
**2025-10-21 (Initial Report)**:
|
|
- Issue identified by user
|
|
- Bank account number has extra '0'
|
|
- Cannot confirm edit in Stripe Dashboard
|
|
- $5 test transaction already processed
|
|
- Payout scheduled but may fail
|
|
|
|
**Next Steps**:
|
|
1. User logs into Stripe Dashboard
|
|
2. User attempts to correct bank account
|
|
3. User reports back if edit persists or fails
|
|
4. If edit fails: Contact Stripe Support immediately
|
|
5. If edit succeeds: Request test payout to verify
|
|
|
|
---
|
|
|
|
## Risk Assessment
|
|
|
|
**Current Risk**: 🟡 MODERATE TO HIGH
|
|
|
|
- Payout amount: Small ($4.56)
|
|
- Payout timing: Delayed by Labour Day (gives time to fix)
|
|
- Account error: May cause rejection (funds return to Stripe)
|
|
- Wrong account: Unlikely (invalid accounts get rejected)
|
|
|
|
**Action Required**: Fix bank account configuration in next 24-48 hours
|
|
|
|
---
|
|
|
|
**Prepared by**: Claude Code (Autonomous Security & Bug Investigation)
|
|
**Status**: Awaiting user action in Stripe Dashboard
|
|
**Priority**: CRITICAL - Affects real money payouts
|