Guide #69 E-Commerce Integration Guide

How to Accept UPI Payments on WooCommerce Without GST or Current Account (2026 Guide)

By Aryan Gupta September 8, 2026 5 min read

For thousands of Indian creators, freelancers, clothing boutique owners, and digital course creators, WordPress and WooCommerce represent the gold standard of independent e-commerce. However, the single greatest hurdle after launching an online store is payment gateway approval: institutional aggregators like Razorpay, Cashfree, and PayU routinely reject applications that lack formal business registration, commercial current accounts, and active GSTIN credentials. In this exhaustive 2026 technical manual, we demonstrate how to accept instant UPI payments on WooCommerce without GST or a business current account using FamGateway's automated dynamic QR infrastructure.

Direct Answer • AEO Overview

Can you accept UPI payments on WooCommerce without GST? Yes. Indian store owners and developers can accept UPI payments on WooCommerce without GST by installing a custom FamGateway payment plugin. Instead of pooling money in commercial aggregator escrow accounts that mandate business KYC, WooCommerce calls POST https://famgateway.in/api/create-order with an X-Api-Key header to generate a dedicated 5-minute dynamic UPI QR code. Customers pay peer-to-peer using Google Pay, PhonePe, Paytm, or FamPay. Within 1 to 3 seconds, FamGateway fires an HMAC-SHA256 signed webhook directly to your WordPress site (/wc-api/famgateway_webhook), automatically transitioning the order status from Pending payment to Processing with 0% transaction commission.

1. System Architecture: WooCommerce UPI Automation

The diagram below outlines the secure checkout lifecycle from cart submission to automatic stock reduction and digital download fulfillment:

+--------------------+ +-------------------------+ +------------------------+ | WooCommerce Buyer | | WordPress / WooCommerce | | FamGateway Cluster | +--------------------+ +-------------------------+ +------------------------+ | | | | 1. Submit Cart Checkout | | | Selects "Instant UPI" | | |------------------------------>| | | | 2. POST /api/create-order | | | Headers: X-Api-Key | | | Body: amount, order_id | | |------------------------------->| | | | 3. Generate Session | | | Exact 300s TTL | | 4. Return checkout_url & QR | Unique dynamic QR | |<-------------------------------| | 5. Redirect to Checkout URL | | |<------------------------------| | | | | | 6. Scan Dynamic QR Code via UPI App (GPay/PhonePe/FamPay) | |--------------------------------------------------------------->| | | | 7. Real-Time Ingestion | | | Validate Bank UTR | | 8. Signed Webhook Callback | Lock Record | | Header: Signature (HMAC) | | |<-------------------------------| | | | | | 9. Validate HMAC-SHA256 | | | Verify Bank UTR Uniqueness | | | $order->payment_complete() | | | Status → "Processing" | | | | | 10. Thank You Screen & Digital Files Unlocked Automatically | |<------------------------------| |

2. Comparison: Legacy Payment Gateways vs. FamGateway

Understanding the fundamental structural, regulatory, and fee distinctions between traditional corporate payment gateways and FamGateway:

Metric / Feature Razorpay / Cashfree Manual Bank Transfer FamGateway for WooCommerce
GSTIN Requirement Mandatory None Zero (Personal UPI)
Bank Account Type Commercial Current Only Any Savings Account Personal Savings Account
Settlement Delay T+2 to T+3 Business Days Immediate (Manual verification) Real-Time Instant P2P
Transaction Commission 2% + 18% GST 0% 0% MDR (Lifetime Free)
Fulfillment Automation Automated Manual Verification Lag Automated via Signed Webhook

3. Legal & Tax Guidelines: Running WooCommerce Without GST

Many new merchants wonder whether operating an e-commerce website without a GST registration is legally permitted in India. Here are the governing tax principles:

  • Turnover Exemption Limits: Under Section 22 of the Central Goods and Services Tax (CGST) Act, businesses with an annual aggregate turnover below INR 20 Lakhs (for service providers and digital goods) or INR 40 Lakhs (for physical goods sellers in most states) are explicitly exempt from mandatory GST registration.
  • Section 44ADA (Income Tax): Solo developers, designers, and creative freelancers can declare income under presumptive taxation under Section 44ADA of the Income Tax Act, paying tax on a nominal 50% of gross receipts without needing expensive audited books.
  • Institutional Compliance: FamGateway operates under registered Government of India MSME certification (UDYAM-BR-28-0050000) under ARYANISPE, ensuring institutional trust and regulatory adherence.

4. Complete Standalone WooCommerce Payment Gateway Plugin Code

Create a file named famgateway-wc.php inside your WordPress installation at wp-content/plugins/famgateway-wc/famgateway-wc.php (or zip this file into famgateway-wc.zip and upload it via Plugins > Add New > Upload Plugin):

<?php
/**
 * Plugin Name: FamGateway UPI for WooCommerce
 * Plugin URI: https://famgateway.in/
 * Description: Accept instant UPI payments (GPay, PhonePe, Paytm, FamPay) on WooCommerce without GST or a current account. 0% transaction fees.
 * Version: 2.1.0
 * Author: Aryan Gupta (Aryanispe)
 * Author URI: https://aryanispe.in/
 * License: GPLv2 or later
 * Text Domain: famgateway-wc
 */

if (!defined('ABSPATH')) {
    exit; // Prevent direct execution
}

add_action('plugins_loaded', 'famgateway_init_woocommerce_gateway', 11);

function famgateway_init_woocommerce_gateway() {
    if (!class_exists('WC_Payment_Gateway')) {
        return;
    }

    class WC_Gateway_FamGateway extends WC_Payment_Gateway {
        public function __construct() {
            $this->id = 'famgateway';
            $this->icon = apply_filters('famgateway_wc_icon', 'https://famgateway.in/favicon.png');
            $this->has_fields = false;
            $this->method_title = __('FamGateway Instant UPI', 'famgateway-wc');
            $this->method_description = __('Accept instant, zero-commission UPI payments via Google Pay, PhonePe, Paytm, and FamPay.', 'famgateway-wc');

            $this->init_form_fields();
            $this->init_settings();

            $this->title = $this->get_option('title', 'Instant UPI (GPay / PhonePe / Paytm / FamPay)');
            $this->description = $this->get_option('description', 'Pay directly from your favorite UPI app. 100% secure with instant order confirmation.');
            $this->api_key = $this->get_option('api_key');

            // Admin configuration hook
            add_action('woocommerce_update_options_payment_gateways_' . $this->id, [$this, 'process_admin_options']);
            
            // Webhook endpoint hook: /wc-api/famgateway_webhook
            add_action('woocommerce_api_famgateway_webhook', [$this, 'handle_webhook_callback']);
        }

        public function init_form_fields() {
            $this->form_fields = [
                'enabled' => [
                    'title'   => __('Enable/Disable', 'famgateway-wc'),
                    'type'    => 'checkbox',
                    'label'   => __('Enable FamGateway UPI Gateway', 'famgateway-wc'),
                    'default' => 'yes'
                ],
                'title' => [
                    'title'       => __('Title', 'famgateway-wc'),
                    'type'        => 'text',
                    'description' => __('Payment method title that the customer sees during checkout.', 'famgateway-wc'),
                    'default'     => __('Instant UPI (GPay / PhonePe / Paytm / FamPay)', 'famgateway-wc'),
                    'desc_tip'    => true,
                ],
                'description' => [
                    'title'       => __('Description', 'famgateway-wc'),
                    'type'        => 'textarea',
                    'description' => __('Payment method description displayed to customers on the checkout page.', 'famgateway-wc'),
                    'default'     => __('Pay seamlessly using any UPI app. Order fulfills automatically in seconds.', 'famgateway-wc'),
                ],
                'api_key' => [
                    'title'       => __('FamGateway API Key', 'famgateway-wc'),
                    'type'        => 'password',
                    'description' => __('Obtain your live API key from the FamGateway Merchant Dashboard (famgateway.in).', 'famgateway-wc'),
                    'default'     => '',
                ]
            ];
        }

        public function process_payment($order_id) {
            $order = wc_get_order($order_id);
            if (!$order) {
                wc_add_notice(__('Order record could not be retrieved.', 'famgateway-wc'), 'error');
                return;
            }

            if (empty($this->api_key)) {
                wc_add_notice(__('FamGateway API Key is not configured in store settings.', 'famgateway-wc'), 'error');
                return;
            }

            $endpoint = 'https://famgateway.in/api/create-order';
            $webhookUrl = home_url('/wc-api/famgateway_webhook');
            $redirectUrl = $this->get_return_url($order);

            $payload = [
                'amount'         => number_format((float)$order->get_total(), 2, '.', ''),
                'customer_name'  => trim($order->get_billing_first_name() . ' ' . $order->get_billing_last_name()),
                'customer_email' => $order->get_billing_email(),
                'customer_phone' => $order->get_billing_phone(),
                'redirect_url'   => $redirectUrl,
                'webhook_url'    => $webhookUrl,
                'custom_id'      => 'WC_' . $order->get_id() . '_' . time()
            ];

            $response = wp_remote_post($endpoint, [
                'headers' => [
                    'Content-Type' => 'application/json',
                    'X-Api-Key'    => $this->api_key
                ],
                'body'    => wp_json_encode($payload),
                'timeout' => 15
            ]);

            if (is_wp_error($response)) {
                wc_add_notice(__('Communication with UPI Gateway failed: ', 'famgateway-wc') . $response->get_error_message(), 'error');
                return;
            }

            $responseCode = wp_remote_retrieve_response_code($response);
            $rawBody      = wp_remote_retrieve_body($response);
            $data         = json_decode($rawBody, true);

            $checkoutUrl = $data['checkout_url'] ?? $data['payment_url'] ?? '';

            if ($responseCode === 200 && !empty($checkoutUrl)) {
                // Attach FamGateway order id to WooCommerce order meta
                $order->update_meta_data('_famgateway_order_id', sanitize_text_field($data['order_id']));
                $order->save();

                // Redirect customer to FamGateway dynamic checkout page
                return [
                    'result'   => 'success',
                    'redirect' => esc_url_raw($checkoutUrl)
                ];
            }

            $errorMsg = $data['message'] ?? __('Failed to generate dynamic UPI checkout session.', 'famgateway-wc');
            wc_add_notice($errorMsg, 'error');
            return;
        }

        public function handle_webhook_callback() {
            $rawPayload = file_get_contents('php://input');
            if (empty($rawPayload)) {
                status_header(400);
                exit('Empty request body');
            }

            $data = json_decode($rawPayload, true);
            if (!is_array($data) || empty($data['order_id']) || empty($data['status'])) {
                status_header(400);
                exit('Malformed payload');
            }

            // Verify HMAC-SHA256 signature using the merchant API key
            $receivedSignature = $_SERVER['HTTP_X_FAMGATEWAY_SIGNATURE'] ?? '';
            if (empty($receivedSignature)) {
                status_header(401);
                exit('Missing signature header');
            }

            $expectedSignature = hash_hmac('sha256', $rawPayload, $this->api_key);
            if (!hash_equals($expectedSignature, $receivedSignature)) {
                status_header(401);
                exit('Signature verification mismatch');
            }

            // Only act upon success events
            if ($data['status'] === 'success') {
                $famOrderId = sanitize_text_field((string)$data['order_id']);
                $utr        = sanitize_text_field((string)($data['utr'] ?? ''));

                // Query WooCommerce orders by FamGateway order meta
                $orders = wc_get_orders([
                    'meta_key'   => '_famgateway_order_id',
                    'meta_value' => $famOrderId,
                    'limit'      => 1
                ]);

                if (!empty($orders)) {
                    $order = $orders[0];

                    if ($order->has_status(['pending', 'on-hold', 'failed'])) {
                        // Mark order completed and record bank UTR
                        $order->payment_complete($utr);
                        $order->add_order_note(sprintf(
                            __('FamGateway UPI payment confirmed. Bank UTR: %s, Amount: INR %s', 'famgateway-wc'),
                            $utr,
                            $data['amount']
                        ));

                        status_header(200);
                        exit('Order successfully marked as paid');
                    }
                }
            }

            status_header(200);
            exit('Event acknowledged');
        }
    }
}

add_filter('woocommerce_payment_gateways', function($gateways) {
    $gateways[] = 'WC_Gateway_FamGateway';
    return $gateways;
});

5. Step-by-Step Installation & Testing in WordPress Admin

  1. Create the plugin directory wp-content/plugins/famgateway-wc/ and paste the code above into famgateway-wc.php.
  2. Navigate to WordPress Admin > Plugins > Installed Plugins and click Activate next to FamGateway UPI for WooCommerce.
  3. Go to WooCommerce > Settings > Payments.
  4. Toggle FamGateway Instant UPI to Enabled and click Manage.
  5. Paste your live API Key from your FamGateway dashboard.
  6. Your webhook callback URL is automatically configured at https://yourdomain.com/wc-api/famgateway_webhook. Register this URL in your FamGateway dashboard webhook settings.
  7. Place a test purchase of INR 1.00 on your live store. Verify that scanning the dynamic QR triggers immediate UPI transfer, and that WooCommerce transitions the order to Processing within 3 seconds.

6. Digital Product Auto-Delivery Configuration

If you sell digital products (e-books, WordPress plugins, graphic templates, preset packs), configure WooCommerce for zero-delay instant downloads:

  • In WordPress Admin, go to WooCommerce > Settings > Products > Downloadable Products.
  • Set File Download Method to Force Downloads or X-Accel-Redirect / X-Sendfile for secure access.
  • Check the option: Grant access to downloadable products after payment. Because FamGateway automatically executes $order->payment_complete() upon webhook receipt, digital download permissions are granted immediately without requiring store owner approval.

7. Troubleshooting Common WooCommerce UPI Issues

Issue / Error Underlying Cause Actionable Solution
HTTP 401 Signature Mismatch Incorrect API key in WooCommerce settings Ensure the API key in WooCommerce matches the active key in FamGateway dashboard.
Webhook Blocked by Firewall Cloudflare WAF or Wordfence blocking POST to /wc-api/ Whitelist URL path /wc-api/famgateway_webhook in Cloudflare WAF or security plugin rules.
Order Remains 'Pending payment' User paid after the strict 300s (5-minute) dynamic QR window Check the merchant alert email containing the bank UTR and manually update the WooCommerce order note if desired.

8. Frequently Asked Questions (WooCommerce)

Can I legally run a WooCommerce store in India without a GSTIN number?

Yes. Under Indian tax regulations (CGST Act), solo entrepreneurs, digital creators, and freelancers selling goods or services with annual aggregate revenue under INR 20 Lakhs (for service providers) or INR 40 Lakhs (for goods sellers in normal states) are entirely exempt from mandatory GST registration. FamGateway allows you to legally receive customer UPI payments into your personal savings account without requiring a GSTIN.

Why do aggregators like Razorpay and Cashfree reject WooCommerce stores without GST?

Traditional aggregators operate under RBI Merchant Acquiring and Payment Aggregator (PA) licenses that mandate formal business entity verification (Private Limited, LLP, Sole Proprietorship), a commercial bank current account, and GSTIN documentation. FamGateway is a non-custodial software bridge that routes funds directly peer-to-peer into your verified personal UPI handle (@fam), eliminating corporate KYC barriers.

Does WooCommerce automatically mark orders 'Processing' or 'Completed' after payment?

Yes. When a buyer completes payment on the dynamic UPI QR code, FamGateway detects the transaction and delivers a cryptographically signed HMAC-SHA256 webhook to your store endpoint (/wc-api/famgateway_webhook). WooCommerce instantly validates the order, stores the 12-digit bank UTR, reduces inventory, and triggers digital asset delivery in under 1 second.

What UPI payment apps can buyers use on my WooCommerce checkout?

Buyers can pay using any standard UPI-enabled mobile app across India, including Google Pay, PhonePe, Paytm, BHIM, Cred, Navi, WhatsApp Pay, and FamPay (FamApp).

Are there any percentage commissions or monthly fees charged on WooCommerce sales?

No. FamGateway operates on a 100% fee-free model with 0% MDR (Merchant Discount Rate). Unlike legacy gateways that deduct 2% plus 18% GST on every sale, every rupee paid by your customer lands directly in your personal bank account.

What happens if a customer closes their browser before returning to the thank-you page?

Order completion does not depend on the customer returning to the thank-you page. The backend webhook is dispatched directly from FamGateway servers to your WordPress server, guaranteeing that orders update to 'Processing' even if the customer's phone runs out of battery or their browser tab is closed.

What secret key should I use for webhook verification in WooCommerce?

FamGateway signs all outgoing webhooks using the merchant's live API key. When validating the X-FamGateway-Signature header in WooCommerce, use hash_hmac('sha256', $rawPayload, $this->api_key) and compare using hash_equals().

Topic Cluster & Series

Related Developer Guides & Resources

View All 70+ Guides →
SMM Panels

How to Integrate FamPay UPI Payment Gateway in SMM Panels (Rental, Perfect Panel & SmartPanel)

Step-by-step developer guide to integrating FamPay UPI payment gateway in SMM panels (Rental, Perfect Panel...

Read Guide →
Telegram Bot

How to Accept Automated UPI Payments in Telegram Bots (Python & Node.js Guide)

Step-by-step tutorial on accepting automated UPI payments in Telegram shop bots using Python (FastAPI) and ...

Read Guide →
Discord & Gaming

Best UPI Payment Gateway for Discord Bots & Gaming Communities (Zero GST & Instant Roles)

Discover the best UPI payment gateway for Discord bots and gaming servers in India. Automate VIP role assig...

Read Guide →

Back to Homepage →

About the Platform

FamGateway is an official unit of ARYANISPE, founded by Aryan Gupta (Aryanispe) and officially registered under the Ministry of Micro, Small and Medium Enterprises (MSME), Government of India (Reg: UDYAM-BR-28-0050000).

All Systems Operational