BANKpay+ for WooCommerce
🚀 Transform Your Payment Processing with Instant SEPA Bank Transfers
BANKpay+ for WooCommerce enables your store to accept instant SEPA bank transfers with settlement in just 7 seconds. No card fees, no chargebacks, just instant bank-to-bank payments.
🏛️ EU Late Payment Directive Compliant – Stay compliant with European payment regulations while getting paid faster. Our AI-powered invoice agent sends smart reminders and auto-extracts payment details, helping you manage cash flow professionally and get paid on time.
🤖 AI-Powered Payment Management – Upload invoices, automatically extract payment details, and send intelligent reminders to customers. Our invoice processing AI helps you maintain professional payment workflows and reduce late payments.
🎯 Key Benefits
- ⚡ 7-Second Settlement – Get your money instantly, not in days
- 💰 Up to 70% Lower Fees – Save thousands compared to card processors
- 🛡️ Zero Chargebacks – Bank transfers are final and irreversible
- 🏦 3000+ Banks Supported – Works with all major European banking institutions
- ✅ EU Regulation Compliant – Late Payment Directive, PSD2, GDPR
- 🤖 AI Invoice Processing – Auto-extract payment details and send smart reminders
- 📱 Mobile-First Experience – Optimized for smartphone banking apps
- 🔄 One-Click Repeat Payments – Returning customers pay with a single tap
💡 Why Choose BANKpay+ Over Card Payments?
💰 Save Money
- Credit card fees: 1.5-3.5% per transaction
- BANKpay+ fees: Starting at 0.5% (save up to €2,500/month on €100k revenue)
- No monthly fees, no setup costs
⚡ Get Paid Instantly
- Settlement time: 7 seconds (vs. 2-7 days with cards)
- Same-day access to your money
- Improved cash flow management
🛡️ Zero Chargeback Risk
- Bank transfers are final and irreversible
- No fraudulent chargebacks
- No chargeback fees (typically €15-25 each)
😊 Better Customer Experience
- No card details required
- Works with all European banks (3000+ institutions)
- Mobile-first payment flow
- One-click payments for returning customers
👥 Who Should Use This?
Perfect for:
- 💼 B2B businesses needing compliance with EU Late Payment Directive
- 🏪 Online stores serving European customers
- 📦 High-volume merchants wanting to reduce payment processing costs
- 📈 Subscription businesses needing reliable recurring payments
- 🏛️ Professional services (lawyers, accountants, consultants)
- 💰 Merchants tired of chargebacks and fraud
- ⚡ Businesses needing instant access to funds for better cash flow
🚀 Features
💸 Payment Processing
- ⚡ Instant Settlement – Money in your account within 7 seconds
- 💰 Low Fees – Significantly lower than card processing fees (starting at 0.5%)
- 🛡️ No Chargebacks – Bank transfers are final and secure
- 🌍 EU Coverage – Accept payments from customers across Europe
- ↩️ Refunds – Process refunds directly from WooCommerce
- ✓ IBAN Validation – Real-time validation with MOD-97 checksum (70+ countries)
- 🔄 Returning Customers – One-click payment with saved bank selection
🏛️ Compliance & Professional Features
- ✅ EU Late Payment Directive Compliance – Stay compliant with European B2B payment regulations
- 🔔 Smart Payment Reminders – AI-powered reminders help you get paid on time
- 🤖 Invoice AI Agent – Automatically upload and process invoices
- 📄 Auto-Extract Payment Details – AI reads invoice data (amount, due date, customer info)
- 💼 Professional Payment Workflows – Maintain compliance and professionalism
- 📅 Payment Terms Management – Track due dates and automate follow-ups
- 📊 Audit Trail – Complete payment history for regulatory compliance
⚙️ Admin Experience
- 📊 Analytics Dashboard – Comprehensive payment analytics with Chart.js visualizations
- 📋 Transaction Management – View all BANKpay+ payments in dedicated admin panel
- 📈 Payment Dashboard – Real-time statistics (today, week, month, all-time)
- 📉 Performance Metrics – Success rates, volume trends, and processing times
- 🏦 Bank Analytics – Top performing banks with usage statistics
- 💾 CSV Export – Download analytics data for external analysis
- 🔍 Order Details – Payment information displayed on order edit screen
- 📱 WordPress Dashboard Widget – Quick overview of payment activity
- 🔎 Search & Filter – Find transactions by status, customer, or order number
🔒 Security & Reliability
- 🔐 Bank-Grade Security – Webhook signature verification and HMAC authentication
- 🚦 Rate Limiting – Automatic protection against webhook abuse
- 🔁 Replay Protection – Timestamp validation prevents duplicate processing
- 🛡️ CSRF Protection – All admin actions protected with capability checks
- 🔒 Security Headers – CSP, HSTS, X-Frame-Options, and more
👨💻 Developer Friendly
- 🧪 Test Mode – Sandbox environment for testing
- ⚡ HPOS Compatible – Full support for High-Performance Order Storage
- ✅ WordPress Standards – Follows WordPress and WooCommerce coding standards
- 🔌 Extensible – Hooks and filters for customization
- 🔗 REST API – Public endpoint for IBAN validation
📋 Requirements
- ✅ WooCommerce 8.0 or higher
- ✅ PHP 8.0 or higher
- ✅ WordPress 6.0 or higher
- ✅ BANKpay+ merchant account (Sign up here)
⚙️ How It Works
- 🛒 Customer selects BANKpay+ at checkout
- 🏦 Customer is redirected to select their bank
- 📱 Customer authorizes payment in their banking app
- ⚡ Payment is confirmed and settled instantly
- ✅ Customer is returned to your store
🚀 Get Started in 5 Minutes
- 📥 Install – Download from WordPress.org or search in your admin panel
- ✅ Activate – Click “Activate” in your plugins list
- 🔗 Connect – Run the setup wizard (WooCommerce → Settings → Payments → BANKpay+)
- 🧪 Test – Place a test order to verify everything works
- 🎉 Go Live – Switch from test mode to live mode
💡 Easy Setup: Our guided setup wizard walks you through every step. No technical knowledge required!
Translations
BANKpay+ for WooCommerce is fully translated and available in 6 languages:
- English (en_US) – Default, 100% complete
- German (de_DE) – Deutsch, 100% complete (~98 strings)
- Italian (it_IT) – Italiano, 100% complete (~98 strings)
- Portuguese (pt_PT) – Português, 100% complete (~98 strings)
- Spanish (es_ES) – Español, 100% complete (~98 strings)
- Greek (el) – Ελληνικά, 100% complete (~98 strings)
Contributing Translations
We welcome translation contributions! You can contribute in two ways:
-
Via WordPress.org (recommended) Visit: https://translate.wordpress.org/projects/wp-plugins/bankpay-open-banking-sepa-payments-for-woocommerce/ Translations submitted via GlotPress are automatically included in language packs.
-
Via GitHub Fork the repository, translate the PO files in the
languages/directory, and submit a pull request. Seelanguages/README.mdfor detailed translation guidelines.
Translation Credits
- German: BANKpay+ Team (based on BANKpay+ application translations)
- Italian: BANKpay+ Team (professional translation)
- Portuguese: BANKpay+ Team (professional translation)
- Spanish: BANKpay+ Team (professional translation)
- Greek: BANKpay+ Team (professional translation for compliance market)
Thank you to all translators for making BANKpay+ accessible to users across Europe!
For Translators
Total strings to translate: 309 – PHP strings: ~271 (admin interface, settings, error messages) – JavaScript strings: ~38 (customer-facing UI, validation feedback)
Key terminology: – “Instant Bank Transfer” → “SEPA-Sofortüberweisung” (DE) – “Settlement” → “Abwicklung” (DE) – “Bank-grade security” → “Bank-Level Sicherheit” (DE)
For complete translation guidelines, glossary, and context notes, see: languages/README.md in the plugin directory
For Developers
BANKpay+ is built with developers in mind, featuring extensive hooks, filters, and well-documented APIs for customization and integration.
Architecture
Design Patterns:
- Dependency Injection Container
- Repository Pattern for order operations
- Observer Pattern for webhook events
- Strategy Pattern for payment flows
Key Components:
WC_Gateway_BANKpay_Plus– Main gateway class extending WC_Payment_GatewayBANKpay_Plus_API– RESTful API client with retry logicBANKpay_Plus_Webhook– Webhook handler with signature verificationBANKpay_Plus_Analytics– Payment metrics and reportingBANKpay_Plus_IBAN_Validator– MOD-97 validation with 70+ country support
API Integration
Authentication:
Authorization: Bearer {access_token}
X-API-Key: {api_key}
X-HMAC-Signature: {hmac_sha256}
Create Checkout Session:
POST /api/checkout/create
{
"amount": 100.00,
"currency": "EUR",
"reference": "Order #123",
"return_url": "https://yourstore.com/checkout/thank-you",
"webhook_url": "https://yourstore.com/?wc-api=wc_gateway_bankpay_plus"
}
Webhook Payload:
POST /?wc-api=wc_gateway_bankpay_plus
{
"event": "checkout.completed",
"checkout_id": "chk_123",
"payment_id": "pay_456",
"status": "completed",
"timestamp": "2025-01-26T15:30:00Z"
}
Hooks & Filters
Actions (Execution Points):
bankpay_plus_payment_initiated– Fires when payment initiatesbankpay_plus_payment_complete– Fires when payment completesbankpay_plus_payment_failed– Fires when payment failsbankpay_plus_refund_completed– Fires when refund processesbankpay_plus_webhook_received– Fires on webhook receiptbankpay_plus_webhook_verified– Fires after signature verificationbankpay_plus_webhook_failed– Fires on webhook errorbankpay_plus_analytics_event– Fires on analytics tracking
Filters (Data Modification):
bankpay_plus_gateway_title– Customize payment method titlebankpay_plus_gateway_description– Customize checkout descriptionbankpay_plus_payment_button_text– Customize payment button textbankpay_plus_checkout_data– Modify checkout session databankpay_plus_api_endpoint– Change API endpoint URLbankpay_plus_api_timeout– Adjust API request timeout (default: 30s)bankpay_plus_iban_valid– Override IBAN validation resultbankpay_plus_bank_list_cache_ttl– Adjust bank list cache (default: 24h)bankpay_plus_webhook_rate_limit– Adjust webhook rate limit (default: 50/min)bankpay_plus_verify_webhook_signature– Toggle signature verification
Code Examples
Example 1: Custom Payment Completion Logic
add_action('bankpay_plus_payment_complete', 'my_custom_payment_handler', 10, 2);
function my_custom_payment_handler($order_id, $payment_data) {
$order = wc_get_order($order_id);
// Send custom confirmation email
wp_mail(
$order->get_billing_email(),
'Payment Confirmed - Instant Delivery',
'Your payment was processed in 7 seconds!'
);
// Trigger fulfillment webhook
wp_remote_post('https://warehouse.example.com/fulfill', [
'body' => json_encode([
'order_id' => $order_id,
'payment_method' => 'bankpay_instant'
])
]);
}
Example 2: Customize Gateway Title
add_filter('bankpay_plus_gateway_title', 'custom_gateway_title', 10, 2);
function custom_gateway_title($title, $order_id) {
return $title . ' (Money in 7 seconds)';
}
Example 3: Validate Custom Business Rules
add_filter('bankpay_plus_checkout_data', 'add_business_rules', 10, 2);
function add_business_rules($data, $order) {
// Add custom validation for high-value orders
if ($order->get_total() > 1000) {
$data['require_phone_verification'] = true;
}
// Add custom metadata
$data['merchant_reference'] = get_option('custom_order_prefix') . $order->get_id();
return $data;
}
Example 4: Track Conversions in Analytics
add_action('woocommerce_thankyou', 'track_bankpay_conversion', 10, 1);
function track_bankpay_conversion($order_id) {
$order = wc_get_order($order_id);
if ($order->get_payment_method() === 'bankpay_plus') {
do_action('my_analytics_track', [
'event' => 'instant_payment_completed',
'value' => $order->get_total(),
'settlement_time' => '7_seconds'
]);
}
}
REST API Endpoints
IBAN Validation:
POST /wp-json/bankpay-plus/v1/validate-iban
{
"iban": "DE89370400440532013000"
}
Response:
{
"valid": true,
"country": "DE",
"bank_code": "37040044",
"checksum_valid": true,
"formatted": "DE89 3704 0044 0532 0130 00"
}
Rate Limiting: 10 requests per minute per IP address Caching: Validation results cached for 30 days Algorithm: MOD-97 checksum validation for 70+ countries
Database Schema
Analytics Table: {$wpdb->prefix}bankpay_plus_analytics
CREATE TABLE wp_bankpay_plus_analytics (
event_id BIGINT AUTO_INCREMENT PRIMARY KEY,
order_id BIGINT NOT NULL,
checkout_uuid VARCHAR(100),
event_type VARCHAR(50) NOT NULL,
event_timestamp DATETIME NOT NULL,
order_total DECIMAL(10,2),
currency VARCHAR(3),
customer_email VARCHAR(100),
bank_connector_id INT,
bank_name VARCHAR(255),
processing_time_ms INT,
is_returning_customer TINYINT(1),
user_agent_hash VARCHAR(64),
INDEX idx_order_id (order_id),
INDEX idx_event_type (event_type),
INDEX idx_event_timestamp (event_timestamp)
);
Testing
PHPUnit Test Suite:
cd wp-plugin/bankpay-plus-woocommerce
composer install
./vendor/bin/phpunit --testsuite unit
./vendor/bin/phpunit --testsuite integration
Code Quality:
composer phpcs # Check WordPress coding standards
composer phpcbf # Auto-fix coding standards
composer phpstan # Static analysis (level 8)
Makefile Commands:
make test-all # Run all tests
make lint # Check coding standards
make format # Auto-fix code style
make phpstan # Static analysis
Security Considerations
Webhook Signature Verification:
Automatic HMAC SHA-256 verification ensures webhook authenticity. Invalid signatures are rejected with HTTP 403.
Rate Limiting:
- Webhooks: 50 requests/minute per IP
- IBAN validation: 10 requests/minute per IP
- Automatic blocking with exponential backoff
Data Protection:
- All input sanitized with
sanitize_text_field(),sanitize_url() - All output escaped with
esc_html(),esc_url(),esc_attr() - No sensitive data in logs (automatic redaction)
- GDPR compliant (SHA-256 hashing for personal data)
Documentation
In Plugin Directory:
README.md– Quick start and overviewDEVELOPER_GUIDE.md– Architecture and contribution guidelinesAPI_INTEGRATION_GUIDE.md– Step-by-step API integrationTESTING_GUIDE.md– Unit, integration, and E2E testingWARP.md– AI assistant integration guide
Online Resources:
- GitHub: https://github.com/k42/WooCommerce
- API Docs: https://docs.bankpay.plus/api
- Support: https://wordpress.org/support/plugin/bankpay-open-banking-sepa-payments-for-woocommerce/
Contributing
We welcome contributions! Please see CONTRIBUTING.md in the plugin directory for:
- Code style guidelines (WordPress + WooCommerce standards)
- Testing requirements (PHPUnit coverage)
- Pull request process
- Security disclosure policy
Found a bug? Report it on the WordPress.org support forum
