Description
Accept manual bank transfers, mobile wallet payments and Raast payments in your WooCommerce store. CardRaabta displays your receiving details, collects payment proof and helps you review submissions before confirming payment.
Customers transfer PKR to your existing receiving account and submit a screenshot or transaction reference. You check the actual funds in your account, then approve the payment or reject the proof with a helpful reason.
The plugin does not require payment-provider API credentials. You need an account permitted by your provider to receive your intended payments. CardRaabta is independent third-party software, not affiliated with or endorsed by WooCommerce or the payment providers. It does not verify funds automatically, connect to bank/wallet APIs, process cards or issue automatic refunds.
How it works
- Add your receiving account details and enable the methods you want to offer.
- The customer selects a method and transfers the order amount using your instructions.
- The customer submits proof at checkout, or later if you allow unpaid orders without checkout proof.
- Review the submission in Transactions and verify the transfer in your actual receiving account.
- Approve the payment, or reject the proof with a reason so the customer can correct it.
Bank, wallet and Raast methods
Offer JazzCash, Easypaisa, SadaPay, NayaPay, Bank Transfer (IBFT), Raast, Zindigi, UPaisa, HBL Konnect, Cash Bank Deposit or a custom payment method.
Configure a display name, account title, receiving number/IBAN/identifier, instructions and optional QR image for each method. Customers see the details matching their selection. These are receiving instructions, not direct provider integrations. Never enter account passwords or PINs.
Checkout and customer payment proof
- Supports Classic Checkout, Checkout Blocks and WooCommerce HPOS.
- Responsive payment forms with receiving details and account-copy controls.
- Proof is required at checkout by default. Optionally allow unpaid orders with later proof submission.
- Configure screenshot, reference, date, note and confirmation fields. Use the same settings for checkout/order pages or separate rules.
- Screenshot and date are enabled and required by default; other fields start disabled.
- Every proof submission must include a screenshot or transaction reference, according to your enabled field settings. Dates must be valid and not in the future.
- JPG, PNG and WebP uploads; configurable 1–8 MB limit, default 5 MB, with server-side validation.
- Pending/Rejected proof forms open when the customer chooses to update proof. Paid orders cannot resubmit.
Registered customers use authenticated access. Guests use private order-key links and may need billing-email verification. Selecting or preparing a file does not mean the server has received the proof.
Manual review and proof history
Search by order/reference, filter by status and expand transaction details. Review individual payments or use confirmed bulk actions. Bulk rejection requires a customer-visible reason; approval accepts an optional note. Stale or ineligible records are skipped with a notice.
Customers can replace Pending/Rejected proof under the same transaction ID. Earlier submissions and review decisions remain in manager-only history. Allow 1–10 replacements after the initial submission, default 3, between completed reviews. Completed rejection resets used attempts; changing the configured limit does not. Replacements are complete submissions, so omitted current fields are cleared while prior values stay in history.
All transactions and Trash use pagination, with 20 rows by default and Screen Options for 1–100. Pending proof for an existing order must be reviewed before removal. Trash/Restore change visibility; they do not reverse payments, stock changes or refunds.
Exports, notifications and Email Logs
- Separate manager-only CSV exports for current transactions and proof history, including recorded proof/review information.
- Screenshots appear as attachment IDs, without embedded files or public image URLs. Spreadsheet formula-prefix protection applies.
- Eleven customer/admin notification types covering proof received/updated, review decisions, missing proof and interrupted reviews.
- Configure admin recipients, notification switches and reminder delay. Customer messages use the order billing email.
- Edit email subjects, headings, messages, buttons and reviewer-note highlights; branding uses WooCommerce email settings.
- Desktop/mobile sample previews and logged test emails.
- Email Logs with masked recipients, transport status, attempts, filters and clearing controls.
Missing-proof reminders default to 15 minutes, configurable from 1 minute to 7 days, and recheck eligibility. Dispatch depends on Action Scheduler/WP-Cron and your mail transport. Mail-server acceptance does not confirm inbox delivery. Clearing logs does not cancel queued work or reset duplicate-send protection.
Private evidence and data retention
Payment screenshots use AES-256-GCM encryption and manager-only authenticated access. Back up the database, private evidence and crmp_evidence_key together; losing the key makes retained screenshots unreadable. Server-level protection is also required for private evidence storage: see Installation below.
The plugin stores receiving details, proof, customer/reviewer notes, recorded field settings and email operational data. Queue recipients/message snapshots are scrubbed after 30 days; minimal deduplication metadata remains. Visible Email Logs have separate optional 30-day cleanup.
Proof has no automatic expiry. Permanent transaction removal deletes proof, revisions and private notes while retaining minimal receipt/reference and decision metadata against duplicate approval. Uninstall retains data, settings, evidence and its encryption key; deactivation clears scheduled email work. There is no dedicated personal-data exporter/eraser. Managers should set an appropriate retention policy.
No plugin analytics/tracking, remote executable code or payment-provider API calls are included. A customer confirmation checkbox does not verify that funds were received.
Full documentation | Hosting setup guide
Support
WordPress.org support | GitHub issues | Documentation and source
Developed by Malik Arslan. GPL-2.0-or-later; license text is included in LICENSE.
Screenshots












Installation
Requirements
WordPress 6.5+, WooCommerce 8.3+, PHP 8.1+, OpenSSL and MySQL/MariaDB named-lock support. Use maintained software versions, HTTPS and a working site mail transport.
Install and configure
- Install and activate WooCommerce, then install and activate CardRaabta.
- Under CardRaabta Payments > Payment Methods, enable methods, enter receiving details and save.
- Enable the gateway under WooCommerce > Settings > Payments and use PKR currency.
- Under CardRaabta Payments > Settings, configure proof fields, screenshot size, replacement limit, recipients, notifications and email templates.
- Arrange private screenshot storage protection using the server checklist below before accepting screenshot submissions.
- Place a staging order and test proof submission, manual approval/rejection, replacement and actual email delivery.
Server configuration: what is automatic?
The evidence directory is the cardraabta-manual-payments-for-woocommerce subdirectory under your site’s actual WordPress uploads base. With default uploads, its URL path is:
/wp-content/uploads/cardraabta-manual-payments-for-woocommerce/
- Apache: the plugin creates
.htaccessdenial rules when the first screenshot is saved. Usually no manual rule is needed ifmod_rewriteand the required directory overrides are enabled. Verify enforcement with your host. - OpenLiteSpeed: the plugin creates the same rules. Rewrite handling and automatic
.htaccessloading must be enabled for the virtual host; ask your host to confirm. - Nginx, including an Nginx uploads frontend:
.htaccessis ignored. A hosting administrator must add a deny rule to the configuration that actually serves uploads, validate it and reload Nginx. - IIS: the plugin creates
web.configauthorization rules. URL Authorization must be installed and site/directory-level authorization configuration allowed; hosting assistance may be needed.
The plugin does not edit/reload server-wide configuration or automatically verify effective HTTP protection. Existing administrator guards are preserved. Finding a guard file or an empty index.php does not prove protection. Encryption still applies when a rule is missing, but direct access to private storage must be blocked.
Protect the uploads evidence folder, not the plugin’s public CSS/JS directory. Custom/multisite uploads paths, CDN/media hosts and proxy routing need matching protection. If screenshots are disabled and none have ever been stored, there are no evidence files to protect; disabling uploads later or uninstalling does not remove retained files.
Verify private storage protection
Ask your hosting provider to test on staging after the evidence folder exists:
- Create a temporary readable
crmp-access-test.txtinside it, containing a unique harmless marker, never customer information. - Request its real URL logged out, including with a query string, and check the directory URL. Expect 403/404; IIS may also return 401. The marker and directory contents must not be exposed. HTTP 500 is a configuration error, not a pass.
- Check any CDN/proxy route, then confirm authorized managers can still view valid evidence and public plugin assets/receiving QR images work.
- Delete the test file and keep effective denial rules in place.
Open CardRaabta Payments > Setup Guide or the complete server guide for Apache rules, the Nginx configuration example, IIS settings and a message to send your host. The menu opens GitHub when clicked; it does not send payment/customer data or configure your server.
Upload limits, caching and backups
PHP upload_max_filesize must cover your chosen screenshot limit; post_max_size and proxy body limits must allow the complete request, including roughly one-third base64 overhead for browser-prepared screenshots. Ask your host for appropriate uploads ownership/permissions.
Exclude private commerce pages, order-key URLs, Store API checkout, wc-ajax and proof/CSV endpoints from full-page caches. Preserve checkout script dependencies, exclude required scripts from interaction delays and safelist dynamic crmp- / crmp_ CSS. See the full documentation for examples. Keep protected backups of the database, evidence files and encryption key together.
FAQ
-
Does this verify payments automatically?
-
No. Check received funds in your bank/wallet account before approving. Screenshots, references and customer confirmation alone do not prove payment.
-
Do I need a merchant account or API keys?
-
No payment-provider API credentials are required. Use a receiving account permitted by your provider for your intended payments; no bank/wallet API integration is included.
-
Does it support Checkout Blocks and HPOS?
-
Yes, alongside Classic Checkout. Test your theme, checkout extensions and hosting configuration on staging.
-
Can customers place an order without proof?
-
Yes, if you disable mandatory checkout proof. The order stays unpaid until reviewed; any proof submitted must satisfy your configured field rules.
-
Can I accept only a reference?
-
Yes. Enable Reference and make it Required, then disable Screenshot or leave it optional. Keep at least one proof field enabled. Checkout and later proof policies can differ.
-
Can customers replace proof?
-
Yes, for Pending/Rejected payments, within your configured replacement limit. Earlier submissions stay in private history; paid orders cannot resubmit.
-
Does Trash or uninstall refund an order or delete everything?
-
No. Trash affects visibility and uninstall retains data. Permanent proof removal keeps minimal receipt metadata to prevent duplicate approval; neither action issues a refund.
-
Why is an email marked Sent to mail server but not delivered?
-
Transport acceptance is not inbox confirmation. Check SMTP/provider logs, recipient/spam folders and scheduled jobs. Clearing a log does not cancel queued work.
-
Does my host need extra configuration?
-
It depends on the server. Follow the server checklist under Installation and verify direct evidence-file access is denied; the linked Setup Guide contains configuration examples.
-
How is evidence protected and what should I back up?
-
Use the documented server protection and back up the database, private evidence files and
crmp_evidence_keytogether. See Private evidence and data retention above for removal and retention behavior. -
Can I use cache or optimisation plugins?
-
Yes, with private-page/endpoint exclusions, correct script dependency order and dynamic CSS safelists. See the documentation and test your configuration.
-
Where can I get help?
-
Use the WordPress.org support forum or GitHub issues. Include software versions and redacted reproduction steps. Keep credentials, customer information and private order links out of public reports; follow SECURITY.md for private security reports.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“CardRaabta Manual Payments for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “CardRaabta Manual Payments for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial release with manual bank, wallet and Raast receiving methods.
- Classic Checkout, Checkout Blocks and HPOS support.
- Configurable payment proof, manual reviews, replacement history and CSV exports.
- Customer/admin email templates, reminders and Email Logs.
- Encrypted screenshot evidence and hosting setup guidance.
