=== Payment forms, Buy now buttons, and Invoicing System | GetPaid ===
Contributors: stiofansisland, paoltaia, ayecode, Ismiaini, picocodes
Donate link: https://www.ko-fi.com/stiofan
Tags:  payments, invoicing, Paypal, Stripe, payment
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 2.8.54
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl-3.0.html

Payments & Invoicing plugin for WordPress to quickly and easily sell online. Create Buy Now buttons or inline checkout forms in seconds to accept online payments on your website.

== Description ==

= Lightweight, extensible, and easy-to-use Online Payments and Invoicing plugin. =

GetPaid can be used as a payment system for 3rd party plugins too.

[youtube https://www.youtube.com/watch?v=gGtehIjDG3E]

= Features =

* Create items with a one-time fee or recurring payments (subscriptions).
* Add a free trial and/or allow buyers to name their price.
* Add items to your website via Buy Now Buttons. Customers can buy on your website via several Payment Gateways.
* Create inline checkout forms to sell items through an optimized landing page.
* Create Invoices that you can send to your customers, who can pay online.
* Create quotes and estimates to send to your clients [requires GetPaid quotes add-on](https://wordpress.org/plugins/invoicing-quotes/)
* Quotes can be turned into invoices, and clients can pay online.
* Create and send invoices directly to receive single or recurring payments.
* Accept payments via [Stripe](https://wordpress.org/plugins/getpaid-stripe-payments/) - (requires GetPaid Stripe add-on), Paypal Standard, Authorize.net, WorldPay and Pre Bank Transfer (other payment gateways available as premium add-ons).
* Export payments and any other data through the reporting system.
* Manage taxes.
* VAT MOSS complaint (European Union VAT management system).
* Easily accept payments and create invoices programmatically through other plugins.

= A payment system for other plugins and themes =

GetPaid can be used as a payment system with a checkout page by any plugin.

[Here you find instructions on integrating any plugin with GetPaid.](https://wpgetpaid.com/docs/adding-a-custom-item-type/)

= Plugins currently using GetPaid as their Payment system are =

* [GeoDirectory](https://wpgeodirectory.com/) - GeoDirectory uses GetPaid to manage Invoices, taxes, VAT, and payments.

= Payment Gateways =

* PayPal Standard (built-in) - Accept Paypal and credit card payments (single or recurring) via PayPal.
* Authorize.Net (built-in) - Accept credit card payments (single or recurring) via Authorize.Net.
* Worldpay (built-in) - Accept credit card payments via Worldpay.
* Pre-Bank Transfer (built-in) - Instruct users to send you a bank transfer, which you can later mark as paid.
* [Stripe](https://wordpress.org/plugins/getpaid-stripe-payments/) - Accept credit card payments (single or recurring) directly on your website via Stripe.
* [PayPal Pro](https://wpgetpaid.com/downloads/paypal-pro-payment-gateway/) - Accept PayPal and credit card payments (single or recurring) directly on your website.
* [PayFast](https://wpgetpaid.com/downloads/payfast-payment-gateway/) - Accept payments via PayFast.
* [Cheque Payment](https://wpgetpaid.com/downloads/cheque-payment-gateway/)  - Accept payments via Cheques
* [Mollie](https://wpgetpaid.com/downloads/mollie-payment-gateway/)  - Accept payment via Mollie (EUR only)
* [GoCardless](https://wpgetpaid.com/downloads/gocardless-payment-gateway/)  - Accept payments via GoCardless (direct debits)
* [Sage Pay](https://wpgetpaid.com/downloads/sage-pay-payment-gateway/)  - Accept payments via Sage Pay
* [2CheckOut](https://wpgetpaid.com/downloads/2checkout-payment-gateway/) - Accept payments (single or recurring) via 2CO.
* [Cash on Delivery](https://wpgetpaid.com/downloads/cash-on-delivery-payment-gateway/) - Accept payments via Cash on Delivery
* [PayUmoney](https://wpgetpaid.com/downloads/payumoney-payment-gateway/) - Accept payments via PayUmoney
* [WebPay](https://wpgetpaid.com/downloads/payumoney-payment-gateway/) - Accept payments via WebPay
* [PayUmoney Latam](https://wpgetpaid.com/downloads/payumoney-latam-payment-gateway/) - Accept payments via PayUmoney Latam
* [PayPal Payflow](https://wpgetpaid.com/downloads/paypal-payflow-payment-gateway/) - Accept credit card payments (single or recurring) directly on your website.
* [Square](https://wpgetpaid.com/downloads/square-payment-gateway/) - Accept payments via Square
* [First Data](https://wpgetpaid.com/downloads/firstdata-payment-gateway/) - Accept payments via FirstData
* [Braintree](https://wpgetpaid.com/downloads/braintree-payment-gateway/) - Accept payments via Braintree
* [eWay](https://wpgetpaid.com/downloads/eway-payment-gateway/) - Accept payments via eWAY payment gateway


= Add-ons =

* [Quotes](https://wordpress.org/plugins/invoicing-quotes/) - Create quotes, send them to clients, and convert them to Invoices when accepted by the customer
* [Wallet](https://wordpress.org/plugins/getpaid-wallet/) - Topup and withdraw money from your wallet while also being able to use the balance at checkout
* [Item Inventory](https://wordpress.org/plugins/getpaid-item-inventory/) - Set stock levels for individual items
* [PDF Invoices](https://wpgetpaid.com/downloads/pdf-invoices/) - Send PDF invoices via email or let users download them
* [AffiliateWP Integration](https://wpgetpaid.com/downloads/affiliatewp-integration/) - Integrate with the [AffiliateWP plugin](https://affiliatewp.com/)
* [Contact form 7](https://wpgetpaid.com/downloads/contact-form-7/) - Send an invoice/quote when a user fills out a form
* [Gravity Forms](https://wpgetpaid.com/downloads/gravity-forms/) - Send an invoice/quote when a user fills out a form
* [Ninja Forms](https://wpgetpaid.com/downloads/ninja-forms/) - Send an invoice/quote when a user fills out a form
* [Digital Downloads](https://wpgetpaid.com/downloads/digital-downloads/) - Sell digital files such as eBooks, Music, Videos, or Software
* [Custom Item Success Page](https://wpgetpaid.com/downloads/custom-item-success-page/) - Redirect buyers to different success pages according to the item purchased
* [Advertising](https://wpgetpaid.com/downloads/advertising/) - Sell Ads on your WordPress website (Fully integrated with GeoDirectory)
* [Sales Funnels](https://wpgetpaid.com/downloads/sales-funnels/) - Easily create simple Sales Funnels with Order Bumps, Upsell and Downsell Offers
* [Simple Quantity Discounts](https://wpgetpaid.com/downloads/simple-quantity-discounts/) - Set discounts for Bulk orders
* [Paid Trials](https://wpgetpaid.com/downloads/paid-trials/) - Offer Paid Trials.

New Payment Gateways and Add-ons will be created regularly. If there is a Payment Gateway that you need urgently or a feature missing that you think we must add, [get in touch with us](https://wpgetpaid.com/contact-form/) and we will consider it.

= Support =

Get timely and friendly support for both Core Plugin and add-ons at our official website, [GetPaid Support](https://wpgetpaid.com/support/)

= Origin =

Work on GetPaid ( AKA Get Paid or wpGetPaid ) started in April 2016.
We are proud the original base of the plugin was a fork of [EDD](https://wordpress.org/plugins/easy-digital-downloads/) with permission from Pippin.
Additionally, we are proud of some code from [Sliced Invoices](https://wordpress.org/plugins/sliced-invoices/) by David Grant, which was used in places, mostly for his beautiful invoice layout.
We worked on the plugin for over a year before it got its first public release, we stripped down the code to make it a simple lightweight payment and invoicing plugin with many additional features to fit the needs of our customers.

This product includes GeoLite2 data created by MaxMind, available from
<a href="https://www.maxmind.com">https://www.maxmind.com</a>

== Installation ==

= Minimum Requirements =

* WordPress 6.0 or greater
* PHP version 7.2 or greater
* MySQL version 8.0 or greater

= Automatic installation =

The easiest option is automatic installation. To install WP GetPaid automatically, log in to your WordPress dashboard, navigate to the Plugins menu, and click Add New.

In the search field, type WP GetPaid and click Search Plugins. Once you've found the WP GetPaid plugin, you can install it by simply clicking Install Now. [GetPaid  basic installation](http://wpgetpaid.com/docs/basic-installation/)

= Manual installation =

The manual installation method involves downloading our Directory plugin and uploading it to your webserver via your favorite FTP application. The WordPress codex will tell you more [here](http://codex.wordpress.org/Managing_Plugins#Manual_Plugin_Installation). [GetPaid  basic installation](http://wpgetpaid.com/docs/basic-installation/)

= Updating =

Automatic updates should work seamlessly. To avoid unforeseen problems, we always suggest backing up your website before performing any automated update.

== Frequently Asked Questions ==

[GetPaid FAQ](https://wpgetpaid.com/faq/).

== Screenshots ==

1. Recurring service subscription.
2. One-time digital product payment.
3. Donations/Fundraising example.
4. Admin payment forms list table.
5. Admin subscriptions list table.
6. Admin earnings report.
7. Sample crowdfunding payment form.
8. Invoice edit screen.
9. Single invoice view page.

== Changelog ==

= 2.8.54 - 2026-06-30 =
* Verify authenticity of Worldpay payment notifications before marking invoices as paid - SECURITY

= 2.8.53 - 2026-06-24 =
* Authorize.NET live mode displays Card code is required error - FIXED
* Merge AUI 0.2.50 & SD 1.2.33

= 2.8.52 - 2026-06-18 =
* Enhance signature validation on legacy Authorize.NET IPN callback - SECURITY

= 2.8.51 - 2026-06-17 =
* PayPal renewal payment failed email notification to customer - ADDED
* Option added to assign custom payment form to invoice - ADDED

= 2.8.50 - 2026-06-05 =
* Added extra validation to secure AJAX payment form request - SECURITY

= 2.8.49 - 2026-06-04 =
* Item Variations - Sell multiple pricing tiers (e.g. Personal, Business, Agency) from a single item, each with its own price and billing cycle - ADDED
* Bank transfer subscription not advancing when renewal invoice is marked as "Paid (renewal)" - FIXED
* Billing address state field not refreshing when country changes - FIXED
* Renamed invoice status label "Renewal Payment" to "Paid (renewal)" for clarity - CHANGED

= 2.8.48 - 2026-04-23 =
* Embed checkout - Render inside theme header/footer via `?wrap=true` query param (classic & block themes) - ADDED

= 2.8.47 - 2026-04-02 =
* WordPress 7.0 compatibility - COMPATIBILITY

= 2.8.46 - 2025-03-10 =
* Make billing email field readonly for logged in user - CHANGED

= 2.8.45 - 2025-03-05 =
* Data anonymization - Fixed GDPR eraser hook, infinite recursion on user deletion, personal data leaking in logs, and missing billing address anonymization - FIXED
* Authorize.net - ACH/eCheck bank account payments - ADDED

= 2.8.44 - 2026-02-26 =
* Option added to use native site template for direct payment page - ADDED

= 2.8.43 - 2026-02-19 =
* Decimal Separator as comma don't allows to enter prices with comma - FIXED

= 2.8.42 - 2026-02-05 =
* Subscriptions search not returning results - FIXED
* Show recurring amount and period on parent invoice - CHANGED

= 2.8.41 - 2026-01-29 =
* Render subscriptions header and footer content via template - CHANGED

= 2.8.40 - 2026-01-22 =
* Added bulk actions for admin subscriptions list table - ADDED
* Fixed missing translation strings for dynamic tax labels and VAT validation messages - FIXED
* Some email and gateway description text are not translatable - FIXED
* Merge AUI 0.2.43, SD 1.2.31 & AyeCode Connect Helper 1.0.5 - CHANGED

= 2.8.39 - 2025-12-18 =
* Hook added to filter renewal payment invoice data - ADDED

= 2.8.38 - 2025-12-11 =
* Check for Soap class before validating VAT number with VIES - FIXED

= 2.8.37 - 2025-12-04 =
* WordPress 6.9 compatibility check - COMPATIBILITY

= 2.8.36 - 2025-11-27 =
* VAT validation bypass allowing fake VAT numbers to zero-rate tax - FIXED
* Dynamic tax field labels based on country-specific tax configuration - ADDED
* Changes for Stripe renewal payment fail notification email issue - FIXED
* Conflicts with Rank Math SEO on Leads page - FIXED

= 2.8.35 - 2025-09-25 =
* Minor BS5 compatibility changes - CHANGED
* EU Vat validation is not working when store country is non EU - CHANGED

= 2.8.34 - 2025-09-11 =
* Check & use default payment form in checkout if already set - CHANGED
* Sometimes Subscription marked as pending on renewal payment - FIXED

= 2.8.33 - 2025-08-28 =
* Added tool to add dynamic database strings for translations - ADDED
* Merge AUI 0.2.41 & SD 1.2.26 - CHANGED

= 2.8.31 - 2025-08-14 =
* Subscription status not updating when invoice status changes - FIXED
* Create pages with blocks when supports blocks on fresh install - CHANGED

= 2.8.30 - 2025-08-07 =
* Merge SD 1.2.25 - CHANGED

= 2.8.29 - 2025-07-31 =
* Merge AUI 0.2.40 & FA 1.1.10 - CHANGED

= 2.8.28 - 2025-07-10 =
* Fix conflicts with Pods plugin - CHANGED

= 2.8.27 - 2025-06-26 =
* Changes for subscription manage button - CHANGED

= 2.8.26 - 2025-05-15 =
* Expired/cancelled subscriptions should not show next payment date - CHANGED

= 2.8.25 - 2025-04-17 =
* Remove initial invoice details from renewal reminder email to prevent confusion - CHANGED

= 2.8.24 - 2024-03-27 =
* Payment form file upload not displaying selected files - FIXED
* Can't override address fields template - FIXED
* Show gateway name with transaction link in backend invoices list - ADDED
* Added data retention and anonymization system with configurable settings, anonymization process, automated cleanup, and enhanced GDPR compliance - ADDED
* Added PayPal subscription cancellation - ADDED
* Fixed PayPal refunds and subscription cancellations not being processed - FIXED
* Option added to disable subscription support for Bank Transfer gateway - ADDED
* PHP warnings on setup wizard page - FIXED

= 2.8.23 - 2024-01-30 =
* Allow to export payment form custom fields data in export invoices - ADDED
* Adjusted payment IPN priority to resolve email issues - FIXED
* Recommend plugins section is broken with BS 5 in setup wizard window - FIXED

= 2.8.22 - 2024-01-09 =
* Update Super Duper to v1.2.17 & AUI to v0.2.31 - CHANGED

= 2.8.21 - 2024-12-20 =
* Function _load_textdomain_just_in_time was called incorrectly - FIXED

= 2.8.20 - 2024-12-13 =
* admin JS minified file failed to create and was missing - FIXED

= 2.8.19 - 2024-12-12 =
* Changes to better support AyeCode Connect Turnstile Captcha - ADDED

= 2.8.18 - 2024-11-28 =
* Item image is missing in invoice emails - FIXED
* Bank Transfer auto renewal invoice shows incorrect total when tax & discount applied to invoice - FIXED
* WordPress 6.7 compatibility changes for translation - CHANGED

= 2.8.17 - 2024-11-12 =
* Renewal invoice shows incorrect total when tax & discount applied to invoice - FIXED
* Discount code usages don't increase - FIXED
* Composer packages updated - UPDATED

= 2.8.16 - 2024-10-10 =
* Update FlatPickr JS library to v4.6.13 - CHANGED
* Recurring item period dropdown is not responsive with BS5 - FIXED

= 2.8.15 - 2024-10-03 =
* Add maxlength validation to CCV input - CHANGED
* wpinv_get_pages() not allowing child page selection - FIXED
* Filter added `wpinv_get_pages_limit` to adjust the 500 pages limit - ADDED

= 2.8.14 - 2024-09-26 =
* wpinv_get_pages() using prepare when not needed causes PHP notice - FIXED

= 2.8.13 - 2024-09-16 =
* Authorize.net documentation links updated - CHANGED
* Composer packages updated - UPDATED
* get_pages() WP function replaced with custom function for better memory usage - CHANGED

= 2.8.12 - 2024-08-08 =
* Restrict backend page access via user capabilities - FIXED

= 2.8.11 - 2024-08-01 =
* Payment form shows field name untranslated with WPML - FIXED
* Emails are not sent for the bank transfer invoice created for renewal - FIXED

= 2.8.10 - 2024-07-17 =
* non FSE themes can fail to render new blocks - FIXED

= 2.8.9 - 2024-07-16 =
* Hide VAT Number for invoice receipt when tax option disabled - CHANGED

= 2.8.8 - 2024-06-11 =
* Failed to save customer billing address from backend edit profile - FIXED
* Customer data is not deleted when user is deleted - FIXED
* Tax amount not refreshed on country change - FIXED
* Allow to show tax name in invoice line items - CHANGED
* Correct PayPal sandbox activity & subscription url - CHANGED

= 2.8.7 =
* PHP 8.2 compatibility changes in Emogrifier class - CHANGED
* Payment form reCAPTCHA conflicts with Ninja Forms reCAPTCHA - FIXED
* IPN validation fails to validate receiver email with PayPal sandbox mode - FIXED
* PayPal shows error "Things don't appear to be working at the moment." - FIXED
* Wallet addon not correctly activating from addons page - FIXED

= 2.8.6 =
* Moved email merge tags from an external gist to display below the email body textarea - CHANGED
* Modal payment form close button not working if BS5 styles selected - FIXED

= 2.8.4 =
* Option added to send notification on subscription activated - ADDED

= 2.8.3 =
* Add option to change the button type used to apply discounts.
* Fix slashes added to invoice item names that have special chars.

= 2.8.2 =
* Display taxes on invoice as separate line items if enabled in settings.
* Fix the invoice to fit on a single page when printing.
* Fix: Customer search not working.
* Make the refund modal work with both BS5 and BS4.

= 2.8.1 =
* Add framework to refund payments in remote gateways.

= 2.8.0 =
* Add extra checks when processing Authorize.NET renewals.
* Test on WordPress 6.4.
* New customers' table.

= 2.7.9 =
* Fix one-time item label.

= 2.7.8 =
* Allow creating one-time items.

= 2.7.7 =
* Make it possible to set renewal reminders for up to 45 days.
* Fix taxes not recalculated when updating vat number for manually created invoices.
* Add: Ability to change maximum bill times for bank transfer payments.
* Add: Ability to change maximum bill times for manual payments.
* Add: Ability to change maximum bill times for Authorize.net payments.

= 2.7.6 =
* Add: Ability to change subscription dates for bank transfer payments.
* Add: Ability to change subscription dates for manual payments.
* Add: Ability to change subscription dates for Authorize.net payments.
* Tested on WordPress 6.3

= 2.7.5 =
* Fix: Reports showing incorrect summaries.

= 2.7.4 =
* Use set parent ID when creating a new item - FIXED
* Unable to name custom prices when paying for an existing invoice - FIXED

= 2.7.3 =
* Add: Function to fetch user IDs who purchased an item.
* Fix PHP 8.2 deprecation warnings.

= 2.7.2 =
* Fix: grecaptcha not defined error when recaptcha is not enabled.
* Update packages.

= 2.7.1 =
* Fix: PayPal sandbox not validating when main paypal email setting is empty.
* Add reCaptcha V2 and v3 support.

= 2.7.0 =
* Action to reset form stats - ADDED
* Test on WordPress 6.2
* Change: Re-use existing invoice when an abandoned checkout session is resumed.

= 2.6.26 =
* Checkbox value always shows as checked in submitted form data - FIXED
* SD & AUI packaged updated - UPDATED

= 2.6.25 =
* AyeCode UI update defaulted to BS v5 instead of v4 - FIXED

= 2.6.24 =
* Change: Subscription cancel button now links to the PayPal cancel page.
* Fix: PayPal subscription renewal invoices marked as pending.

= 2.6.23 =
* .distignore ignores vendor folder.

= 2.6.21 =
* Add .distignore file.

= 2.6.20 =
* Fix: PayPal gateway sends invoice pending payment emails on subscription renewals.
* Change: Stop checking nonces when no data is saved to prevent issues with page caching.
* Fix: Reports show db error on multi sites.

= 2.6.19 =
* Bank Transfer: Calculate subscription renewal date from the last invoice date instead of the last payment date.
* Fix: Object cache hides Stripe settings.

= 2.6.18 =
* Test on WordPress 6.1

= 2.6.17 =
* Fix issues where 2 subscriptions are created for manually generated invoices.
* Creating items on the invoice page defaults to "Tax Exempt".
* Fixed: Date picker not showing on the report export page.

= 2.6.16 =
* Add an admin tool to fix permalinks.
* Fix prices more than 10,000 USD rounded up.

= 2.6.15 =
* Remove invoicing post types from the seo framework - ADDED
* Invoice / Quote note deletion not working - FIXED
* Update Namibian currency symbol - CHANGED
* Improve messaging for limited subscriptions - CHANGED
* Latest Stripe changes compat - ADDED

= 2.6.14 =
* Quantity Selector adds 0.01 instead of 1 - FIXED
* Auto-format card numbers using a space - ADDED

= 2.6.13 =
* Fix BuddyPress integration not working correctly.

= 2.6.12 =
* Fatal error when checking out with an existing username on PHP 8 - FIXED

= 2.6.11 =
* Fallback tax rate does not allow decimals - FIXED
* Clicking on the number of invoices in the customers table shows their invoices - ADDED
* Allow HTML in item descriptions - CHANGED
* Ability to prefill form values via URL query variables - ADDED
* Ability to set the payment date without first having to mark the invoice as paid then saving it - ADDED

= 2.6.10 =
* CSS string shows up on the subscription overview page - FIXED
* Renewal reminder emails throw an error on some instances - FIXED

= 2.6.9 =
* Ability to create custom tax rules - ADDED
* "Same country rule" setting relocated to the main tax settings - CHANGED
* Use site title and icon on direct payment URLs - CHANGED

= 2.6.8 =
* Cannot uncheck checkbox - FIXED
* Invalid maxmind License link - FIXED
* Display featured images on invoices and payment forms - ADDED

= 2.6.7 =
* New "Single Invoice" widget - ADDED
* Favicon not inherited on invoice pages - FIXED
* Some composer files did not push with last release - FIXED
* Codebase improvements - ADDED

= 2.6.1 =
* GetPaid Elementor widgets not showing in searches - FIXED
* New report hooks - ADDED

= 2.6.0 =
* Link to the embed page from the items overview page - ADDED
* Hide shortcode and direct payment details for packages, ads and other non-standard item types - CHANGED
* Link to related remote transaction from Invoice page - ADDED
* Display gateway details on the subscription overview list table - ADDED
* Confusing email failure message when creating invoices via admin backend - FIXED

= 2.5.14 =
* Can't uncheck the disable taxes checkbox when editing invoices - FIXED

= 2.5.13 =
* Requires a specific item to be on the cart to apply a specific discount - ADDED
* Ability to duplicate quotes and invoices - ADDED
* Do not send new invoice emails for paid invoices - CHANGED
* Latest AUI changes compatibility - ADDED

= 2.5.12 =
* Apostrophes slashed when used in invoice item description - FIXED
* Link to the subscription from individual invoices - ADDED
* Filter to change the default BuddyPress GetPaid tab - ADDED

= 2.5.11 =
* Ability to export subscriptions - ADDED
* Ability to search subscriptions - ADDED
* Updated default tax rates - CHANGED

= 2.5.10 =
* PayPal IPN throws errors on some requests - FIXED

= 2.5.9 =
* "Require login to checkout" only affects invoices - FIXED
* Date field - ability to set default, minimum and maximum dates - ADDED
* Ability to select multiple dates and date ranges from the range field - ADDED
* Ability to disable certain days of the week, certain dates and date ranges - ADDED

= 2.5.8 =
* Super Duper changes - ADDED

= 2.5.7 =
* Make checkout items mobile friendly - CHANGED
* New discounts only work if for selected items - FIXED

= 2.5.6 =
* HTML is stripped from paragraph and heading elements - FIXED
* Ability to import items/discounts/invoices via WP All import - ADDED

= 2.5.5 =
* Javascript breaks when optimized by autoptimize - FIXED

= 2.5.4 =
* New file upload field - ADDED

= 2.5.3 =
* "All 404 Redirect to Homepage" causes settings page to disappear - FIXED

= 2.5.2 =
* Super Duper v2 causing some issues with builders that use widgets, rolled back to SDv1 to resolve - FIXED

= 2.5.1 =
* Prevent error if Elementor Pro installed and old extension not updated - FIXED

= 2.5.0 =
* Bank transfer gateway now supports subscriptions - ADDED

= 2.4.9 =
* Add direct payment links to payment forms - ADDED

= 2.4.8 =
* Ability to set payment gateway when creating an invoice - ADDED
* Ability to clear selected pages - ADDED
* Cancelling a subscription does not cancel it in Stripe - FIXED

= 2.4.7 =
* Preserve newlines in invoice / quote descriptions - ADDED
* Ability to add dynamic items to any payment forms - ADDED

= 2.4.6 =
* Manually created invoice billing details do not appear on payment form - ADDED
* [getpaid_edit_address] shortcode - ADDED

= 2.4.5 = 
* Ability to collect company ID on the checkout page - ADDED
* Ability to duplicate payment forms - ADDED
* Ability to bulk re-send invoices - ADDED
* Stripe connect button doesn't work the first time it's clicked on the set-up wizzard - FIXED

= 2.4.4 = 
* WordPress 5.8 compatibility check.

= 2.4.3 =
* Add PayPal connect button

= 2.4.2 =
* Update assets

= 2.4.1 =
* Add new item dropdown only displays 100 items - FIXED
* Add getpaid_use_new_invoice_items_metabox to revert back to old invoice items metabox - ADDED

= 2.4.0 =
* Add invoice items now lists all items instead of using ajax - CHANGED
* Ability to create a new invoice item when creating an invoice - ADDED
* Ability to display custom form elements on invoices and receipts - ADDED
* Customers can now set additional CC email addresses - ADDED
* New setup wizzard - ADDED

= 2.3.8 =
* Ability to export all customers - ADDED
* Ability to set the default Website form element value to the current page's URL - ADDED
* Settings reset when General settings tab is saved - FIXED

= 2.3.7 =
* Renew Authorize.NET subscriptions on the expiry date instead of one day after expiry - CHANGED
* Option to stop GetPaid from sending emails for free invoices - ADDED
* MaxMind database API key not saving - FIXED
* [Authorize.NET] Unable to pay with the same card twice when logged out - FIXED
* Stripe addon cannot be installed from the GetPaid extensions page - FIXED
* Create new user button fills existing user data if email exists - CHANGED
* Slashes show up on apostrophes - FIXED

= 2.3.6 =
* Unable to use equal prices in price select field - FIXED
* Display selected price label in invoice and emails - ADDED
* Cannot toggle sandbox mode before enabling gateway - FIXED

= 2.3.5 =
* Payment form, some custom fields not showing due to array sanitization - FIXED

= 2.3.4 =
* Payment form CPT editing restricted to admin user role - CHANGED
* Backend payment form labels not fully sanitized for contributor user level and above - FIXED/SECURITY

= 2.3.3 = 
* Edit buttons in settings on GetPaid Pages - ADDED
* Manual gateway shows as activated if there's no active gateway - FIXED
* Gateways overview settings page incorrectly shows "subscription support" information - FIXED
* Authorize.NET shows error if a customer tries to checkout again after previously failing - FIXED

= 2.3.2 =
* Replace subscription interval select with a number input box - CHANGED
* Display post states on invoice pages - ADDED
* Free trials show "Free Forever" on the payment page - FIXED
* Do not submit the form when pressing enter in quantity/price/vat input boxes - CHANGED

= 2.3.1 =
* New user notification emails can now be enabled/disabled via GetPaid > Settings > Misc > Disable new user emails
* UsersWP integration now overwrites invoice history page - ADDED
* Display invoice description in invoice emails - ADDED

= 2.3.0 =
* Indicate first renewal date if possible - ADDED
* Add multiple subscriptions support for compatible payment gateways - ADDED
* Unable to set decimal quantities when editing an invoice item - FIXED

= 2.2.6 =
* Ability to use payment form fields as email merge tags - ADDED
* Recurring discounts display payment form fields - FIXED
* Tax rates per state are now filtered case-insensitively - CHANGED

= 2.2.5 =
* Exclude invoice notes from comment counts - CHANGED
* Display item tax rates on invoices - ADDED
* Change the address format for userswp account page - CHANGED

= 2.2.4 =
* Authorize.NET improvements - ADDED
* Payment gateways can now only be activated in their respective settings sections - CHANGED
* Add discount field to default (and new payment) forms by default - CHANGED
* Hide discount field if there is no published discount code - CHANGED
* Customers in Canada, Vietnam, Australia, Singapore, Nigeria, Brazil, South Korea, and India are no longer no longer required to provide a VAT number if "Require VAT number" is enabled - CHANGED

= 2.2.3 =
* Invoice paid hooks not fired - FIXED

= 2.2.2 =
* Ability to manually set an invoice's payment date - ADDED
* Do not update customer names when their billing details change - CHANGED
* Support for non-query string webhook URLs - Authorize.NET no longer accepts query strings in webhook URLs - ADDED
* Display discount code errors below the discount field - ADDED

= 2.2.1 =
* Add note for successful notification emails - ADDED
* Link to remote subscription from the subscriptions page - ADDED
* Ability to manually update a subscription's profile id - ADDED
* Site admins can now view other user's subscriptions on the frontend - ADDED
* Show subscription bill times on invoices and subscriptions - ADDED
* Trigger js event when form state changes - ADDED
* Reload page until payment is processed - ADDED

= 2.2.0 =
* Ability to set logo width and height - ADDED
* Flat amount discount code applies to each item instead of the total - FIXED
* Ability to programmatically link a payment form and an invoice - ADDED

= 2.1.10 =
* Non-overridden GetPaid templates not working on Oxygen pagebuilder - FIXED

= 2.1.9 =
* Rename improperly named gateways in invoices table - FIXED
* Oxygen pagebuilder custom templates not working - FIXED
* Existing invoices with wrong VAT numbers not payable unless a valid VAT number is provided - FIXED
* Use a datepicker to set the due date - CHANGED
* PayPal sometimes shows incorrect totals - FIXED
* Invoices with discount codes do not automatically add the discount code to the payment form - FIXED

= 2.1.8 =
* Sometimes invoice user not changeable for manual invoices - FIXED
* Improve invoice creation customer searches
* Improve invoice creation item searches
* Wildcard information not shown when editing some email templates - FIXED
* Ability to manually add a discount to a quote - ADDED

= 2.1.7 =
* Lots of customers causes the invoices screen to hang - FIXED
* New invoice emails not sent for invoices created via admin - FIXED
* Philippines misspelled - UPDATED
* Invoice items ordered by ID instead of order added - CHANGED
* Summer Pro theme sets checkboxes/radio buttons to 100% width - FIXED
* Changing country recalculates the invoice totals - CHANGED
* Cancel subscription when all PayPal renewal retries fail - ADDED

= 2.1.6 =
* Subscription emails not editable - FIXED
* Pre-GetPaid invoices containing discounts do not apply the discount on renewals - FIXED
* Tool to recalculate discounts for existing invoices that have discount codes but are not discounted - ADDED.
* Ability to manually add a discount code when editing an invoice - ADDED
* Item description escapes quotes - FIXED

= 2.1.5 =
* Show admin notice on our settings page if a GetPaid database table is missing - ADDED
* Better BuddyPress integration - ADDED
* Ability to manually delete a subscription - ADDED
* Do not display VAT number input on the address edit form if taxes are disabled - CHANGED

= 2.1.4 =
* Validate minimum amounts without sending the value to the servers - CHANGED
* Missing state defaults to country when editing an invoice - FIXED
* Change website name on invoice templates to business name - CHANGED
* Add the sellers vat number at the bottom of the "from" section and remove from the info section - CHANGED
* Move the buyers vat number from invoice meta to "To" section - CHANGED
* If VAT is reverse charged, indicate next to the tax field - ADDED
* "Same country rule" defaults to charging tax even if VAT number is validated - CHANGED
* "Recalculate totals" button on the invoice edit page does not use the updated VAT numbers - FIXED
* Recurring discount code does not update the recurring text - FIXED

= 2.1.3 =
* `wpinv_insert_invoice()` function does not return created invoice on success - FIXED
* UK no longer treated as an EU state and no longer applies reverse VAT - CHANGED
* Ability to for customers to edit their billing addresses - ADDED
* Show total spent on the customers list table - ADDED
* Show invoice count on the customers list table - ADDED
* Show registration date on the customers list table - ADDED
* Ability to search through customers - ADDED

= 2.1.2 =
* Customers list does not display all available customers - FIXED
* Discounts only usable once if a maximum use count is set - FIXED
* Remove jQuery block ui dependency - CHANGED
* City not showing on invoice edit metabox - FIXED
* Price inclusive of tax does not update the subtotal on the invoice - FIXED
* Display subscriptions info on the Gateways overview page - CHANGED
* Card details validated even if 100% discount is used - FIXED
* Display an invoice's date of payment on the admin list table and invoice edit screen - ADDED

= 2.1.1 = 
* Fabulous Fluid theme floats payment form paragraphs - FIXED
* Only migrate an invoice is it's yet to be migrated - FIXED
* VAT only reverse-charged if vat numbers are required to be validated - FIXED

= 2.1.0 =
* Taxes calculated on original amount even if discounts have been added - FIXED
* Invoice totals calculated on the fly instead of displaying the saved total - CHANGED

= 2.0.8 =
* Sometimes PayPal subscriptions generate a renewal invoice instantly - FIXED
* Only display the discount/fee on a payment form / invoice if we actually have a discount/fee - CHANGED
* Privacy exporter only exports a maximum of 10 invoices - CHANGED
* Show login link on invoice page if required - ADDED
* Display currency in the "minimum amount" error message - ADDED
* Use a responsive invoice table - ADDED
* Ability to use decimal item quantities - ADDED
* Item not updated when only the description is changed - FIXED

= 2.0.7 =
* Incompatibility issues with UX Builder from Flatsome - FIXED
* Template overrides loaded twice - FIXED
* Taxes sometimes applied even if disabled - FIXED
* Wrong trial period shown on the item edit page - FIXED

= 2.0.6 =
* Tool to create missing database tables - ADDED
* Tool to re-copy missing invoices - ADDED
* Conflict with youzer plugin - FIXED
* Make it possible to translate the default payment form using WPML - ADDED
* Invoices edited via admin do not show taxes in the admin unless paid for - ADDED
* Save default tax rates for fresh installs - ADDED

= 2.0.3 =
* Authorize.NET using the last name as the customer's address - FIXED
* Resend invoice button not working - FIXED
* Send invoice reminder button not working - FIXED
* Manual gateway renamed to "Test Gateway" - CHANGED
* VAT validation not working - FIXED

= 2.0.2 =
* Default pages not created for new installs - FIXED
* Default payment form only created during the first checkout - FIXED
* Remove PHP notices shown when a logged out users uses a "buy now" button - FIXED
* Add a tool to generate missing GetPaid pages - ADDED
* Show notice if some GetPaid pages are not set - ADDED

= 2.0.1 =
* New invoices not visible unless a status is manually set - FIXED
* Deleting an invoice item updates the total but does not remove the item from the HTML markup - FIXED
* Subscription not deleted when the recurring item is removed from an invoice - FIXED
* Prices multiplied by 100 when using a comma as a decimal separator - FIXED
* Phone numbers not saving - FIXED
* Payment forms show the current user's billing details instead of the invoice user's billing details - FIXED
* Report graphs not displayed if WordFence is active - FIXED

= 2.0.0-beta3 =
* Fix "minimum value" error with number settings fields - FIXED
* Add the settings REST API endpoint - ADDED
* Add sales REST API endpoint - ADDED
* Add top-sellers REST API endpoint - ADDED
* Add top-earners REST API endpoint - ADDED
* Add invoice counts REST API endpoint - ADDED

= 2.0.0-beta2 =
* Add the raw_html settings field type - ADDED

= 2.0.0-beta1 =
* Exclude invoicing pages from Yoast XML page sitemap - CHANGED
* Bump tested upto WP version - CHANGED
* Send BCC email to admin for Payment Reminder - ADDED
* Ability to create payment forms - ADDED
* If VAT is enabled, you can now disable taxes on a per item basis - ADDED
* If VAT is enabled, you can now disable taxes on a per invoice basis - ADDED
* Invoice action buttons not working on the 2019 theme - FIXED
* Ability to change the invoice date - ADDED
* CTA for free checkouts changed from "Complete" to "Continue" - CHANGED
* Unable to checkout when required fields are hidden via CSS - FIXED
* Buy now buttons shortcode now visible - ADDED
* Admin menus re-ordered to provide better hierarchy - CHANGED
* Revenue reports - ADDED
* Yoast SEO 14.1 style conflicts - FIXED
* Show subscription details on receipt - ADDED
* GeoIP2 database not downloading - FIXED
* Pay now link working for logged out users - FIXED
* Upcoming subscription renewal emails - ADDED
* Ability to send invoice notifications to other emails (CC) other than the one currently being billed - ADDED
* VAT Reverse charge notice - ADDED
* Ability to add descriptions/excerpts to invoices - ADDED
* Ability to view and edit customers - ADDED
* Error shows if all discounts are expired - FIXED
* Some discounts do not have a delete link - FIXED
* Remove Astra and RankMath metaboxes from the Invoice edit pages - ADDED
* Change item prices on a per invoice basis - ADDED
* Improve UI to change invoice item quantities - ADDED
* Ability to charge hours, quantities or amounts only - ADDED
* Worldpay - You can now specify an MD5 secret and callback password.
* Worldpay - invoices are now automatically marked as paid or failed.
* Authorize.NET - Get rid of the Authorize.NET SDK to improve on speed, size and reduce the required minimum PHP version.
* Authorize.NET - Allow customers to save their payment profiles for quicker checkouts.
* Authorize.NET - Replaced the deprecated md5 secret with a [signature key](https://support.authorize.net/s/article/MD5-Hash-End-of-Life-Signature-Key-Replacement)
* Authorize.NET - Improve the subscriptions feature.
* Admin can now manually renew a subscription - ADDED
* Ability to enter prices with tax - ADDED
* All matching tax rates are now applied - CHANGED
* Ability to calculate tax based on base address instead of shop address - ADDED
* Invoice exports now include the item ids - ADDED
* Users can now set a tax rate for all countries - ADDED
* Users can now set a tax rate for multiple states - ADDED

= 1.0.18 =
* Display customer notes on the invoice print page - ADDED
* Use Responsive tables for invoice history invoice items table - CHANGED
* Ability to add item description on the quick add form - ADDED
* Manual payments now support subscriptions - CHANGED
* Pass invoice object to `wpinv_invoice_is_free_trial` filter - 
* PHP 7.4 compatibility - ADDED

= 1.0.17 =
* Show confirmation message when cancelling subscriptions - CHANGED
* Ability to set the receiver email for admin invoice notifications - ADDED
* Discount use reports - ADDED
* Ability to set currency per invoice - ADDED

= 1.0.16 =
* Conflict with Pricing Manager Addon - FIXED

= 1.0.15 =
* Send email notifications for successful renewals - ADDED
* Remove invoice items (or reduce the number) - Added
* `WPInv_Invoice->setup_status_nicename()` now supports quotes - CHANGED
* Created `WPInv_Invoice->is_quote()` method - ADDED
* `wpinv_create_invoice()` and `wpinv_insert_invoice()` functions now support creating quotes - CHANGED
* Invoices api now supports querying items by meta fields and dates - ADDED
* Return canceled PayPal transactions to the checkout page instead of the payment failed page - CHANGED
* Discount Object - ADDED
* AyeCode Connect notice now shows on extensions pages - ADDED

= 1.0.14 =
* Support for group_description for privacy exporters (thanks @garretthyder) - ADDED
* Default buy now button text - ADDED
* Users with a manage_invoicing capability can view subscriptions - ADDED
* Missing "Add New" button on item overview pages - FIXED
* Change invoice address format based on the customer's billing country - ADDED
* More country states - ADDED
* Rearrange address data into a data folder - CHANGED
* [wpinv_buy] shortcode now uses label instead of title for the button label - BREAKING CHANGE

= 1.0.13 =
* Extensions page Gateways not able to be installed via single key - FIXED
* Ability to create, read, update and delete an invoice via REST API - ADDED
* Ability to create, read, update and delete invoice items via REST API - ADDED
* Ability to create, read, update and delete discounts via REST API - ADDED
* Filter invoice address format - ADDED
* Shortcodes converted to Super Duper widgets - CHANGED
* Oxygen plugin page builder breaks invoice template - FIXED
* Error: Call to undefined function `wpinv_month_num_to_name` - FIXED
* Users with a `manage_invoicing` capability can now manage all aspects of the plugin - ADDED
* Super Duper updated to 1.0.16 - CHANGED
* Added alternative IP location service for servers with allow_url_fopen disabled - ADDED

= 1.0.12 =
* Super Duper updated to v1.0.15 - CHANGED

= 1.0.11 =
* BuddyPress profile my invoice tab showing count with paid only should show all - FIXED
* Remove use of WP_Session library and use transient instead - CHANGED
* Mark invoice viewed when a user view it from invoice history - FIXED
* 100% discount with first time payment for recurring payment should not redirect to gateway - FIXED
* Fix 503 error while visiting checkout page if w3 total cache is active - FIXED
* Problem in submitting the checkout form with full price discount - FIXED
* Remove Yoast SEO metabox from edit invoice screen - FIXED
* Allow users to pay what they want - ADDED
* Display gateway in status column on admin side if invoice paid by offline payment gateways - ADDED
* BuddyPress profile my invoice tab showing count with paid only should show all - FIXED
* View invoice link now uses exit instead of wp_die() function - CHANGED

= 1.0.10 =
Invalid invoice user id error sometimes when require login to checkout disabled - FIXED
Extensions screen containing all available add ons for UsersWP and recommended plugins - ADDED
Updated Font Awesome version to 1.0.11 - CHANGED
Setting to allow to enable renewal payment email notification which is disabled by default. - ADDED
Export items to CSV export in reports page - ADDED

= 1.0.9 =
Invoice history menu item should redirect to my invoices in BuddyPress profile if BuddyPress active - FIXED
Use select2 for dropdown. - CHANGED
Invoice set to paid due to conflict with duplicate page plugin - FIXED
Discount should be calculated based on old item price if the item price changed after invoice created - FIXED
Super Duper updated to v1.0.12 - CHANGED

= 1.0.8 =
Checkout fields mandatory is option not working - FIXED
Buddypress profile page invoices tab is not responsive - FIXED
Add classes to invoice page buttons - ADDED
Add invoicing pages to admin menu items metabox - ADDED
filter added to wpinv_get_invoices query params - ADDED
Authorize.net recurring payment only authorize the payment allow capture as well - FIXED
Super Duper updated to v1.0.10 - CHANGED
load vat js files when required - FIXED

= 1.0.7 =
Recurring invoice treated as renewal payment for first payment due to delay in IPN - FIXED
Use font awesome library - CHANGED
Option to allow reset invoice sequence - ADDED
Item editable meta value not working after update item - FIXED
Item summary displays warning if not filled - FIXED


= 1.0.6 =
Invoice print table design issue on mobile - FIXED
Option to add custom style for invoice print page - ADDED
Setting for transaction type in Authorize.net - ADDED
Invoice not saving due to conflicts with ACFPro - FIXED
Translation typos and consistency - FIXED
Search invoice by user email in admin side invoice listing - ADDED
Column displaying invoice count in admin side users listing - ADDED
Updated to use Font Awesome 5 JS version - CHANGED
Updated invoicing menu icon - CHANGED

= 1.0.5 =
Update authorize.net SSL certificates - FIXED
Upgrade from older version < 1.0.3 can sometimes activate sandbox mode for active payment gateways - FIXED
Show warning if test mode active for payment gateways - ADDED

= 1.0.4 =
Invoice notes should not display in RSS feeds - FIXED

= 1.0.3 =
Invoice created date should not updated on invoice published - CHANGED
Show recurring supported gateways in backend item page - CHANGED
Fix front end style conflict - FIXED
Subscription functionality improved - CHANGED
Option to force show company name - ADDED
Avada colorpicker conflicts - FIXED
It is hard to link paypal payment to invoice at paypal site - CHANGED
Fix the color picker conflict with Avada theme - FIXED
GDPR Compliance - ADDED

= 1.0.2 =
Paying old recurring invoice treated as renewal payment and creates new invoice - FIXED
VAT fields not displayed on checkout page for invoice with free trial - FIXED
Payment button text confusing when invoice is non recurring & total is zero - FIXED
wpinv_get_template_part() does not locate the template from the themes - FIXED

= 1.0.1 =
New currencies added - ADDED
Option added to remove data on uninstall - CHANGED
Show last invoice's sequential number - ADDED
Set PayPal landing page to Billing page - CHANGED
GD Listing does not renewed on renewal payment - FIXED
Changing currency should not reflected in existing invoices until invoices re-saved - FIXED
Negative total if discount is greater than item price - FIXED
Checkout/history/success pages should not be cached - FIXED

= 1.0.0 =

initial wp.org release - YAY
Option added to make phone mandatory/optional in address fields - CHANGED
wp-admin url param escaping bug - FIXED
_wpinv_payment_meta should always return an array even if empty - FIXED
No way to remove VAT Details input from frontend - FIXED
Function added to create item from array of data - CHANGED
Fix invoice status conflict with other plugin - CHANGED
Shows incorrect trial end date - FIXED
Invoice notes should not counted in WP standard comments count - CHANGED
Payment gateways should be hidden if invoice total is zero(except invoices with free trial) - FIXED
Allow for sequential invoice numbers - CHANGED
Limit the discount to a single use per user sometimes not working - FIXED
Invoice status "pending" changed to "wpi-pending" - CHANGED
Ajax buy button shortcode added - ADDED

= 0.0.4 =
First public beta release - RELEASE

= 0.0.1 =
ajaxurl sometimes not defined on frontend - FIXED
Not working if GD not installed - FIXED
In print invoice view use the company name if available instead of the website name - CHANGED
Invoice link added in email to view invoice print page - ADDED
In backend button added to send invoice to user via email - ADDED
Backend the initial vat value should be assigned via the user country - CHANGED
In backend button added to recalculate totals for invoice - ADDED
Able to add new user from edit invoice page - ADDED
Tools added to merge GD packages & invoices - ADDED
Discount can be enable/disable for relevant item - ADDED

== Upgrade Notice ==

= 1.0.14 =
[wpinv_buy] shortcode now uses label instead of title for the button label - BREAKING CHANGE
