WordPress / WooCommerce
Install and configure the Snippe payment gateway for WooCommerce
The Snippe WooCommerce plugin adds Snippe as a payment method at checkout: mobile money (with USSD push), card, and dynamic QR — all hosted on Snippe's mobile-optimized checkout page.
Requirements
| Requirement | Version |
|---|---|
| WordPress | 5.8+ |
| WooCommerce | 6.0+ |
| PHP | 7.4+ |
| HTTPS | Required in production |
The plugin is HPOS-compatible, multisite-compatible, and from v1.2.0+ supports WooCommerce block-based checkout.
Install
Download the plugin
Grab the latest release ZIP from the GitHub releases page.
Upload to WordPress
In WordPress Admin → Plugins → Add New → Upload Plugin, select the ZIP and click Install Now.
Activate
Click Activate once the upload completes.
Configure
Go to WooCommerce → Settings → Payments → Snippe.
Configuration
| Field | Description |
|---|---|
| Title | Display name shown at checkout (e.g. "Mobile Money") |
| Description | Description shown to the customer |
| Live API Key | From Dashboard → Settings → API Keys |
| Webhook Secret | For HMAC verification (optional but recommended) |
| Default Payment Type | Mobile Money / Card / QR / customer choice |
| Order Status after Payment | processing or completed |
| Order Prefix | Prefixed to your order reference (default WC-) |
| Enable Logging | For debugging — disable in production |
The webhook URL is automatically included in every payment request, so you do not need to register a webhook endpoint manually in the Snippe dashboard.
How orders map to webhook events
| Snippe event | WooCommerce status |
|---|---|
payment.completed | Processing |
payment.failed | Failed |
payment.expired | Cancelled |
payment.voided | Cancelled |
If you set Order Status after Payment to Completed, successful payments transition straight to Completed instead of Processing.
Phone number normalization
Customers can enter their phone in any of these formats — the plugin normalizes them before sending to Snippe:
0782123456→255782123456255782123456→ unchanged+255782123456→255782123456
Testing
There is no sandbox environment. Use a small live amount (minimum 500 TZS) to verify the end-to-end flow on a staging site, then enable on production.
Troubleshooting
- No "Snippe" option at checkout — confirm WooCommerce currency is set to TZS; the gateway hides itself for unsupported currencies.
- Order stuck in "Pending payment" — check WooCommerce → Status → Logs with logging enabled, and verify your site is reachable on HTTPS so webhooks can be delivered.
- Block checkout doesn't show Snippe — upgrade to plugin v1.2.0+ or revert to the classic
[woocommerce_checkout]shortcode.