Bank Statement Reconciler
AI-powered bank statement reconciliation — upload statements + orders → get matched/difference/unclaimed/unmatched results.
AI Agent Full Flow
from scripts import reconcile_bank_statements, TierConfig
result = reconcile_bank_statements(
statement_file="bank.csv",
order_file="orders.csv",
statement_type="auto",
order_type="auto",
match_mode="smart",
amount_tolerance=0.01,
date_range_days=3,
tier=TierConfig(is_pro=True),
)
# Result keys: matched, differences, unclaimed, unmatched_orders, summary, excel_path
Supported Statement Formats
Chinese Banks (CSV/Excel/PDF)
| Bank | Format | Key Columns | |------|--------|-------------| | BOC | CSV/Excel | Transaction Date, Amount, Counterparty, Balance, Summary | | ICBC | CSV/Excel | Date, Amount, Counterparty Name, Balance, Summary | | CCB | CSV/Excel | Transaction Time, Amount, Counterparty, Balance, Remark | | ABC | CSV/Excel | Transaction Date, Amount, Counterparty Name, Balance, Usage |
Payment Platforms
| Platform | Format | Key Columns | |----------|--------|-------------| | Alipay | CSV | Transaction Time, Counterparty, Amount, Status, Description | | WeChat Pay | CSV | Transaction Time, Transaction Type, Amount, Counterparty, Remark | | PayPal | CSV/JSON | Date, Amount, Item, Status, Counterparty | | Stripe | CSV/JSON | Date, Amount, Description, Customer, Currency |
E-commerce
| Platform | Format | Key Columns | |----------|--------|-------------| | Amazon | CSV/Excel | Order Date, Order ID, Order Status, Item Total, Payment | | Shopify | CSV/Excel | Created, Name, Financial Status, Total, Source | | Temu | CSV | Date, Order ID, Amount, Status, Payment Method |
Matching Modes
1. Exact Matching
Same date + same amount. Best for real-time payments, bank transfers.
2. Fuzzy Matching
Date within ±N days + amount within ±X tolerance. Best for delayed settlements, batch payments.
3. Semantic Matching (PRO only)
AI-powered counterparty name similarity matching. Handles: "Alibaba" ↔ "Alibaba Cloud", "Zhang San" ↔ "Zhang San (Personal)".
Tiered Features
| Feature | FREE | PRO | |---------|:----:|:---:| | Monthly statements | 50 | Unlimited | | Bank accounts | 1 | Unlimited | | Output format | Text | Excel + JSON | | Alipay/WeChat | — | Yes | | PayPal/Stripe | — | Yes | | Semantic matching | — | Yes | | Feishu card | — | Yes | | Price | Free | $0.01/call |
Excel Export Format
Exported Excel (reconciliation_YYYYMMDD_HHMMSS.xlsx) contains:
- Sheet: Matched — Matched transactions
- Sheet: Differences — Amount differences
- Sheet: Unclaimed — Money without order (unclaimed)
- Sheet: Unmatched — Order without payment (unmatched)
- Sheet: Summary — Summary statistics
Feishu Card Output
PRO tier supports Feishu interactive cards with match rate, amounts, and action buttons.
Billing
- Billing via
skillpay.me/api/v1/billing/charge - User data transmitted to SkillPay for billing identification
- $0.01 USD per reconciliation call (PRO tier)
Required Environment Variables
| Variable | Description |
|----------|-------------|
| FEISHU_USER_ID | User ID for billing |
| SKILL_BILLING_API_KEY | SkillPay Builder API Key |
| SKILL_BILLING_SKILL_ID | SkillPay Skill ID (default: bank-statement-reconcile) |
| OPENAI_API_KEY | AI model API key (for semantic matching in PRO) |
Common Errors
| Error | Cause | Solution |
|-------|-------|----------|
| UNSUPPORTED_FORMAT | File format not supported | Convert to CSV/Excel |
| COLUMN_NOT_FOUND | Required column missing | Check statement format |
| AMOUNT_MISMATCH | Amount parsing failed | Verify currency/decimal |
| TIER_LIMIT_EXCEEDED | Statement count exceeds tier | Upgrade or split files |
微信扫一扫