{"id":360886,"date":"2026-09-02T09:46:48","date_gmt":"2026-09-02T09:46:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/saudi-vat-pro-for-woocommerce\/"},"modified":"2026-09-16T09:19:24","modified_gmt":"2026-09-16T09:19:24","slug":"saudi-vat-pro-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ru.wordpress.org\/plugins\/saudi-vat-pro-for-woocommerce\/","author":23432252,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Saudi VAT Pro for WooCommerce","header_author":"Saudi VAT Pro","header_description":"Automatic ZATCA Phase 2 e-invoicing for WooCommerce. Every paid order generates a ZATCA-compliant invoice, B2B buyers enter their VAT number at checkout, and refunds create credit notes \u2014 all without lifting a finger.","assets_banners_color":"","last_updated":"2026-09-16 09:19:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/saudivatpro.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":214,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"abdullahalmulhim1","date":"2026-09-02 09:46:32","revision":3677647},"1.1.0":{"tag":"1.1.0","author":"abdullahalmulhim1","date":"2026-09-16 09:19:24","revision":3698251}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3677646,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3677646,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The Saudi VAT Pro settings screen in WooCommerce \u2192 Settings, showing the Webhook URL and Webhook Secret connection fields.","2":"The WooCommerce admin order screen showing the buyer's VAT number and the \"Retry Saudi VAT Pro submission\" order action.","3":"The customer-facing order details page \"Documents\" section, showing the downloadable Tax Invoice PDF link.","4":"The customer-facing order details page \"Documents\" section after a refund, showing the downloadable Credit Note PDF link."}},"plugin_section":[],"plugin_tags":[225611,126054,19126,286,249732],"plugin_category":[45],"plugin_contributors":[253574],"plugin_business_model":[],"class_list":["post-360886","plugin","type-plugin","status-publish","hentry","plugin_tags-e-invoicing","plugin_tags-saudi-arabia","plugin_tags-vat","plugin_tags-woocommerce","plugin_tags-zatca","plugin_category-ecommerce","plugin_contributors-abdullahalmulhim1","plugin_committers-abdullahalmulhim1"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/saudi-vat-pro-for-woocommerce\/assets\/icon-128x128.png?rev=3677646","icon_2x":"https:\/\/ps.w.org\/saudi-vat-pro-for-woocommerce\/assets\/icon-256x256.png?rev=3677646","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Saudi VAT Pro turns every paid WooCommerce order into a ZATCA-compliant tax invoice automatically. The customer gets a link to download their invoice PDF, and refunds generate a matching credit note \u2014 no manual invoicing, no exporting orders to a spreadsheet.<\/p>\n\n<h4>How it works<\/h4>\n\n<ul>\n<li><strong>Trigger:<\/strong> as soon as an order's payment is confirmed \u2014 either through your payment gateway's payment-complete event, or when the order status changes to Processing or Completed \u2014 the plugin sends it to your connected Saudi VAT Pro account.<\/li>\n<li><strong>Customer experience:<\/strong> with a ZATCA certificate (CSID) enrolled, Saudi VAT Pro generates the invoice signed, hashed, and QR-coded, then submits it to ZATCA for reporting or clearance. The PDF link is returned to the order \u2014 and made available to the customer \u2014 as soon as that processing finishes, whatever the resulting ZATCA outcome; a rejected submission or a missing certificate is flagged in your Saudi VAT Pro dashboard rather than blocking the order.<\/li>\n<li><strong>Refunds:<\/strong> when you refund an order, in full or in part, the plugin submits the refunded items to Saudi VAT Pro, which issues a matching ZATCA credit note referencing the original invoice.<\/li>\n<li><strong>B2B vs. B2C:<\/strong> business buyers can enter their 15-digit Saudi VAT number at checkout to receive a Standard (B2B) tax invoice; buyers who leave it blank get the invoice type you've set as the account default (usually Simplified\/B2C, but configurable to Standard) in Saudi VAT Pro.<\/li>\n<\/ul>\n\n<h4>Connect your store<\/h4>\n\n<p>The plugin connects to Saudi VAT Pro using a webhook URL and a secret generated from your Saudi VAT Pro account \u2014 there is no API key to manage. Connect your store in two steps, then place a test order:<\/p>\n\n<ol>\n<li>In Saudi VAT Pro, go to Settings \u2192 Integrations \u2192 WooCommerce and copy the Webhook URL and Webhook Secret.<\/li>\n<li>In WordPress, go to WooCommerce \u2192 Settings \u2192 Saudi VAT Pro, paste both values, and save.<\/li>\n<\/ol>\n\n<h4>ZATCA scope<\/h4>\n\n<p>This plugin covers ZATCA Phase 2 (Integration Phase) e-invoicing. With a ZATCA certificate (CSID) enrolled in your Saudi VAT Pro account, every invoice is generated as signed, hashed, QR-coded UBL XML, then Simplified (B2C) invoices are reported to ZATCA and Standard (B2B) invoices are submitted for clearance. Without a certificate enrolled, invoices are still generated (with a Phase 1 QR code) but are not signed, reported, or cleared until you enroll one. This plugin does not cover Phase 1-only (generation without reporting) setups as its intended operating mode.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0+, PHP 8.0+, and WooCommerce 7.0+.<\/li>\n<li>An active Saudi VAT Pro account at https:\/\/saudivatpro.com with a ZATCA certificate (CSID) enrolled \u2014 without one, invoices are still generated (with a Phase 1 QR code) but are not signed, reported, or cleared.<\/li>\n<li>A unique HTTPS WooCommerce webhook URL and its secret from Saudi VAT Pro \u2192 Settings \u2192 Integrations \u2192 WooCommerce.<\/li>\n<\/ul>\n\n<h4>Installation<\/h4>\n\n<ol>\n<li>Activate the plugin.<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Saudi VAT Pro.<\/li>\n<li>Paste the required HTTPS Webhook URL and its required Webhook Secret. This plugin does not use an API key.<\/li>\n<li>Save settings and place a test order in your Saudi VAT Pro environment.<\/li>\n<\/ol>\n\n<h4>Configuration and usage<\/h4>\n\n<p>The plugin submits paid orders to Saudi VAT Pro for electronic invoicing and stores the returned invoice identifier and PDF link on the WooCommerce order. When a refund is created, the plugin submits the refunded items to create a matching credit note. If the connection to Saudi VAT Pro itself fails before an invoice is created (for example a timeout), the order is retried automatically up to three times, several minutes apart, and can also be retried manually at any time from the order screen using the \"Retry Saudi VAT Pro submission\" order action. Once an invoice has been created for an order, that order won't be resubmitted from WooCommerce; a ZATCA rejection or a missing certificate at that point is resolved from your Saudi VAT Pro dashboard.<\/p>\n\n<p>The classic shortcode checkout is supported. WooCommerce block checkout does not currently expose this plugin's optional VAT field; collect the VAT number by another compatible checkout extension until native block integration is released.<\/p>\n\n<h3>Compatibility<\/h3>\n\n<p>This release supports WordPress 6.0 or newer, PHP 8.0 or newer, and WooCommerce 7.0 or newer. It supports WooCommerce HPOS. The classic shortcode checkout is supported; the optional VAT field is not currently available in WooCommerce block checkout.<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>When a paid order or refund is submitted, order identifiers, billing details, purchased items, prices, taxes, and the optional VAT number are sent to Saudi VAT Pro at the merchant-configured webhook URL for invoicing and ZATCA processing. The plugin stores the returned invoice identifier, PDF URL, and submission error on the WooCommerce order. It does not send data to any other endpoint. Merchants are responsible for informing customers and configuring their Saudi VAT Pro account lawfully. See https:\/\/saudivatpro.com\/privacy for Saudi VAT Pro's privacy policy.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For setup help or support, visit https:\/\/saudivatpro.com or contact the Saudi VAT Pro team through your account.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20this%20plugin%20actually%20do%3F\"><h3>What does this plugin actually do?<\/h3><\/dt>\n<dd><p>It watches your WooCommerce orders. When an order is paid, it sends the order to your Saudi VAT Pro account, which creates the invoice and \u2014 once a ZATCA certificate is enrolled \u2014 signs it and reports or clears it with ZATCA, then returns a PDF link you can share with the customer. When you refund an order, it does the same to create a matching credit note.<\/p><\/dd>\n<dt id=\"are%20invoices%20generated%20on%20my%20wordpress%20server%2C%20or%20by%20the%20saudi%20vat%20pro%20service%3F\"><h3>Are invoices generated on my WordPress server, or by the Saudi VAT Pro service?<\/h3><\/dt>\n<dd><p>By the Saudi VAT Pro service. This plugin only collects order and refund data and sends it, over your configured webhook, to your Saudi VAT Pro account. Invoice generation, XML signing, and ZATCA submission all happen there \u2014 none of that logic runs on your WordPress site.<\/p><\/dd>\n<dt id=\"are%20refunds%20supported%3F\"><h3>Are refunds supported?<\/h3><\/dt>\n<dd><p>Yes, both full and partial refunds. When you create a refund in WooCommerce, the plugin sends the refunded line items to Saudi VAT Pro, which issues a ZATCA credit note referencing the original invoice for that exact amount.<\/p><\/dd>\n<dt id=\"what%20zatca%20phase%20and%20scope%20does%20this%20cover%3F\"><h3>What ZATCA phase and scope does this cover?<\/h3><\/dt>\n<dd><p>ZATCA Phase 2 (Integration Phase). With a ZATCA certificate (CSID) enrolled, every invoice is generated as signed, hashed, QR-coded UBL XML, then Simplified (B2C) invoices are reported to ZATCA and Standard (B2B) invoices are submitted for clearance. Without a certificate enrolled, invoices are still generated with a Phase 1 QR code but are not signed, reported, or cleared. It does not cover Phase 1-only (generation without reporting) setups as its intended operating mode. The PDF link is returned to the order as soon as this processing finishes, whatever the resulting outcome \u2014 a rejected submission or a missing certificate is flagged in your dashboard instead of failing silently.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20a%20simplified%20and%20a%20standard%20%28b2b%29%20invoice%3F\"><h3>What is the difference between a Simplified and a Standard (B2B) invoice?<\/h3><\/dt>\n<dd><p>A Simplified invoice is issued to a consumer buyer and reported to ZATCA. A Standard (B2B) invoice is issued to a business buyer who provides their 15-digit Saudi VAT number at checkout, and it is submitted to ZATCA for clearance instead of reporting. Enable the optional VAT number field in the plugin settings so business buyers can request a Standard invoice; orders without a VAT number get whichever invoice type you've set as the account default in Saudi VAT Pro (usually Simplified, but this is configurable to Standard).<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20submission%20to%20zatca%20fails%3F\"><h3>What happens if a submission to ZATCA fails?<\/h3><\/dt>\n<dd><p>It depends on where the failure happens. If the connection to Saudi VAT Pro itself fails before an invoice is created (for example a timeout), the plugin retries automatically up to three times, several minutes apart, and you can also retry manually using the \"Retry Saudi VAT Pro submission\" action on the order screen \u2014 that action only resends orders that don't have an invoice yet. If Saudi VAT Pro creates the invoice but ZATCA then rejects it, or no certificate is enrolled yet, the order already has its invoice ID and PDF; that failure is flagged in your Saudi VAT Pro dashboard, where you fix and resubmit it.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%20block%20checkout%3F\"><h3>Does this work with WooCommerce block checkout?<\/h3><\/dt>\n<dd><p>Not yet for the optional VAT number field \u2014 it currently only appears on the classic shortcode checkout. Orders placed through block checkout are still invoiced automatically using your account's default invoice type; business buyers checking out through blocks should use another compatible field to submit their VAT number until native block support ships.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added a \"Test Connection\" button on Settings that verifies the webhook URL and secret without creating a test invoice or touching a live order.<\/li>\n<li>Added a Saudi VAT Pro status panel on the order edit screen (classic and HPOS) showing submission status, invoice ID, PDF link, and last error, with a retry button.<\/li>\n<li>Rewrote the listing copy to lead with the merchant outcome \u2014 automatic ZATCA-compliant invoices, customer PDF access, and refund credit notes \u2014 instead of the webhook mechanism.<\/li>\n<li>Documented the exact ZATCA Phase 2 scope, including the difference between behavior with and without a ZATCA certificate (CSID) enrolled, and clarified that the PDF link is returned as soon as processing finishes, independent of the resulting outcome.<\/li>\n<li>Corrected the documented trigger to match the plugin's actual hooks (payment complete, or order status moving to Processing\/Completed).<\/li>\n<li>Corrected the documented retry behavior: automatic and manual retries only resend orders that have not yet received an invoice; a ZATCA rejection or missing certificate after that point is resolved from the Saudi VAT Pro dashboard.<\/li>\n<li>Corrected the documented behavior for orders without a buyer VAT number: they use the account's configured default invoice type rather than always being Simplified.<\/li>\n<li>Added a Frequently Asked Questions section.<\/li>\n<li>Added screenshot captions describing the settings, admin order actions, and customer-facing document screens that exist today (image capture tracked separately).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Hardened option and order-meta names with a one-time migration from prior names.<\/li>\n<li>Added HPOS-safe order metadata handling and response validation.<\/li>\n<li>Required HTTPS webhook URL and webhook secret; removed misleading API key setup.<\/li>\n<li>Improved retry safety and classic checkout script idempotency.<\/li>\n<li>Submit actual post-discount order totals, including fees and shipping.<\/li>\n<li>Retry each exact refund durably without re-crediting completed refunds.<\/li>\n<li>Documented block checkout limitation and privacy handling.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Automatic ZATCA-compliant invoices for every paid order, a customer PDF link, and credit notes on refund \u2014 no manual invoicing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/360886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=360886"}],"author":[{"embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/abdullahalmulhim1"}],"wp:attachment":[{"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=360886"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=360886"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=360886"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=360886"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=360886"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ru.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=360886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}