{"id":338398,"date":"2026-07-18T12:41:18","date_gmt":"2026-07-18T12:41:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lw-partial-cod-for-woocommerce\/"},"modified":"2026-07-18T12:40:55","modified_gmt":"2026-07-18T12:40:55","slug":"lewebexy-partial-cod-with-razorpay","status":"publish","type":"plugin","link":"https:\/\/cor.wordpress.org\/plugins\/lewebexy-partial-cod-with-razorpay\/","author":23137515,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Lewebexy Partial COD with Razorpay for WooCommerce","header_author":"Ajay Shrivas","header_description":"Collect a partial advance payment via Razorpay before confirming a Cash on Delivery order. Admin decides advance as a fixed amount or percentage of order total.","assets_banners_color":"","last_updated":"2026-07-18 12:40:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/lewebexy.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"lewebexy","date":"2026-07-18 12:40:55"}},"upgrade_notice":{"1.0.2":"<p>Minor Plugin Check compliance fixes \u2014 no admin action needed.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Partial COD settings under WooCommerce \u2192 Settings \u2192 Payments.","2":"Checkout showing the calculated advance amount.","3":"Admin order screen showing advance paid and COD balance due."}},"plugin_section":[],"plugin_tags":[31179,31178,225714,65714,286],"plugin_category":[45],"plugin_contributors":[272188],"plugin_business_model":[],"class_list":["post-338398","plugin","type-plugin","status-publish","hentry","plugin_tags-cash-on-delivery","plugin_tags-cod","plugin_tags-partial-payment","plugin_tags-razorpay","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-lewebexy","plugin_committers-lewebexy"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/lewebexy-partial-cod-with-razorpay.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Lewebexy Partial COD with Razorpay for WooCommerce adds a new payment\nmethod at checkout that replaces plain Cash on Delivery. The customer\npays a small advance online via Razorpay (UPI, cards, netbanking), and\nthe remaining balance is collected as COD on delivery.<\/p>\n\n<p>This helps store owners filter out fake or low-intent COD orders, since the\ncustomer has already made a real payment before the order is confirmed.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Fixed amount (\u20b9) or percentage-based advance \u2014 admin's choice<\/li>\n<li>Advance amount automatically capped so it never exceeds the order total<\/li>\n<li>Works on both the classic (shortcode) checkout and the WooCommerce\nCart &amp; Checkout blocks<\/li>\n<li>Razorpay payment signature verified server-side before any order is\nconfirmed \u2014 never trusts the browser alone<\/li>\n<li>Advance paid \/ COD balance due clearly shown on the admin order screen,\ncustomer order emails, and the order-received \/ My Account order view<\/li>\n<li>HPOS (High-Performance Order Storage) compatible<\/li>\n<\/ul>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>WooCommerce<\/li>\n<li>A Razorpay account (test or live API keys)<\/li>\n<\/ul>\n\n<h4>Support<\/h4>\n\n<p>For support or custom requirements, contact Le Webexy Pvt. Ltd. at\nhttps:\/\/lewebexy.com\/<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin requires a Razorpay account and connects to Razorpay\n(\"Razorpay Software Private Limited\") to process the online advance\npayment. This is core functionality \u2014 without it, the plugin cannot\ncollect the advance payment that the plugin exists to collect.<\/p>\n\n<p><strong>What the service is and what it's used for:<\/strong> Razorpay is a payment\ngateway used to securely collect the advance payment amount from the\ncustomer at checkout (via UPI, card, or netbanking), and to verify that\nthe payment was genuinely completed before the order is confirmed.<\/p>\n\n<p><strong>What data is sent, and when:<\/strong><\/p>\n\n<ul>\n<li>When a customer selects this payment method and proceeds to pay the\nadvance, the plugin loads Razorpay's checkout script from\n  https:\/\/checkout.razorpay.com\/v1\/checkout.js to display the secure\npayment popup.<\/li>\n<li>The plugin sends the order amount (advance only, not the full order\ntotal) and a receipt reference to Razorpay's Orders API\n(<code>https:\/\/api.razorpay.com\/v1\/orders<\/code>) to create a payment order,\nusing the store admin's own Razorpay API keys (entered in\nWooCommerce \u2192 Settings \u2192 Payments \u2192 this gateway's settings \u2014 never\nhardcoded in the plugin).<\/li>\n<li>The customer's name, email, and phone number (already provided at\ncheckout) are passed to Razorpay's checkout popup to pre-fill the\npayment form, as permitted by Razorpay's standard Checkout integration.<\/li>\n<li>After payment, Razorpay returns a payment ID and signature, which the\nplugin verifies server-side against the store's own Razorpay secret\nkey before marking the order's advance as paid. No card or bank\ndetails are ever handled or stored by this plugin \u2014 that happens\nentirely within Razorpay's own hosted checkout.<\/li>\n<\/ul>\n\n<p>Razorpay's terms of service: https:\/\/razorpay.com\/terms\/\nRazorpay's privacy policy: https:\/\/razorpay.com\/privacy\/<\/p>\n\n<p>This plugin does not track users for analytics or advertising purposes,\nand does not send any data to any service other than Razorpay, and only\nfor orders where this payment method is actually used.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via Plugins \u2192 Add New \u2192 Upload Plugin, or extract\ninto <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin. (Requires WooCommerce to be installed and active.)<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Payments \u2192 this gateway's settings.<\/li>\n<li>Enable it, choose Advance Type (Fixed \/ Percentage) and Advance Value.<\/li>\n<li>Enter your Razorpay Key ID and Key Secret.<\/li>\n<li>Disable WooCommerce's default \"Cash on delivery\" gateway so customers\naren't shown two similar payment options at checkout.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20new%20woocommerce%20block%20checkout%3F\"><h3>Does this work with the new WooCommerce block checkout?<\/h3><\/dt>\n<dd><p>Yes. The plugin registers with both the classic shortcode checkout and the\nCart &amp; Checkout blocks.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20customer%20closes%20the%20razorpay%20window%20without%20paying%3F\"><h3>What happens if the customer closes the Razorpay window without paying?<\/h3><\/dt>\n<dd><p>The order stays in \"Pending payment\" status. The customer can retry payment\nany time from My Account \u2192 Orders \u2192 Pay, and the same Razorpay order is\nreused rather than creating a duplicate.<\/p><\/dd>\n<dt id=\"can%20the%20advance%20amount%20exceed%20the%20order%20total%3F\"><h3>Can the advance amount exceed the order total?<\/h3><\/dt>\n<dd><p>No. The advance is automatically capped at the order total, so a fixed \u20b9100\nadvance on an \u20b980 order only charges \u20b980.<\/p><\/dd>\n<dt id=\"is%20the%20razorpay%20payment%20verified%20securely%3F\"><h3>Is the Razorpay payment verified securely?<\/h3><\/dt>\n<dd><p>Yes. The plugin verifies Razorpay's HMAC SHA256 payment signature\nserver-side before marking any order as paid. The client-side success\ncallback alone is never trusted.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20track%20users%3F\"><h3>Does this plugin track users?<\/h3><\/dt>\n<dd><p>No. It does not collect any analytics or tracking data. It only sends the\nminimum data required to Razorpay to process the advance payment \u2014 see\n\"External services\" above.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed missing script version on the Razorpay checkout.js enqueue call.<\/li>\n<li>Cleaned up uninstall.php: prefixed variable name, documented\nphpcs:ignore justifications for the direct\/interpolated queries\n(table names cannot be parameterized via $wpdb-&gt;prepare(), and a\none-time uninstall cleanup has no caching to add).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed for distinctiveness per WordPress.org review feedback.<\/li>\n<li>Razorpay checkout.js and the payment-trigger script are now properly\nenqueued via wp_enqueue_script()\/wp_localize_script() instead of\ninline  tags.<\/li>\n<li>Added \"Requires Plugins: woocommerce\" header.<\/li>\n<li>Documented Razorpay as an external service in this readme.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release \u2014 Fixed\/percentage advance via Razorpay, classic +\nblock checkout support, signature verification, admin\/customer order\ndisplay, HPOS compatibility.<\/li>\n<\/ul>","raw_excerpt":"Collect a partial advance payment via Razorpay before confirming a Cash on Delivery order \u2014 reduce fake\/failed COD orders.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338398"}],"author":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lewebexy"}],"wp:attachment":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338398"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338398"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338398"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338398"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338398"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}