{"id":373061,"date":"2026-09-23T10:19:18","date_gmt":"2026-09-23T10:19:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/usdpay-for-paid-memberships-pro\/"},"modified":"2026-09-23T10:19:02","modified_gmt":"2026-09-23T10:19:02","slug":"usdpay-for-paid-memberships-pro","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/usdpay-for-paid-memberships-pro\/","author":23563152,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"USDPAY for Paid Memberships Pro","header_author":"USDPAY","header_description":"Accept USDT payments in Paid Memberships Pro with USDPAY. Customers pay via hosted checkout and funds are sent directly to the merchant's wallet.","assets_banners_color":"f9f5f1","last_updated":"2026-09-23 10:19:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/usdpay.me\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"probizi91","date":"2026-09-23 10:19:02","revision":3709057}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3709057,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3709057,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3709057,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3711190,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3711190,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[157818,17862,6593,17864,204245],"plugin_category":[],"plugin_contributors":[279890],"plugin_business_model":[],"class_list":["post-373061","plugin","type-plugin","status-publish","hentry","plugin_tags-crypto-payments","plugin_tags-paid-memberships-pro","plugin_tags-payment-gateway","plugin_tags-pmpro","plugin_tags-usdt","plugin_contributors-probizi91","plugin_committers-probizi91"],"banners":{"banner":"https:\/\/ps.w.org\/usdpay-for-paid-memberships-pro\/assets\/banner-772x250.png?rev=3711190","banner_2x":"https:\/\/ps.w.org\/usdpay-for-paid-memberships-pro\/assets\/banner-1544x500.png?rev=3711190","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/usdpay-for-paid-memberships-pro\/assets\/icon.svg?rev=3709057","icon":"https:\/\/ps.w.org\/usdpay-for-paid-memberships-pro\/assets\/icon.svg?rev=3709057","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>USDPAY for Paid Memberships Pro adds USDPAY as a payment gateway for one-time, lifetime, and fixed-duration memberships. Customers pay with USDT through the hosted USDPAY checkout, and membership access is activated only after a signed <code>invoice.paid<\/code> webhook is verified.<\/p>\n\n<p>Supported networks:<\/p>\n\n<ul>\n<li>TRC20<\/li>\n<li>TON<\/li>\n<li>BEP20<\/li>\n<\/ul>\n\n<p>Funds are sent directly to the merchant's configured wallet. The plugin does not store private keys or wallet seed phrases.<\/p>\n\n<p>Automatic recurring crypto charges are not supported in version 1.0.0.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the USDPAY service at <code>https:\/\/usdpay.me<\/code> to create and retrieve payment invoices. The service receives the final order amount, PMPro currency, a non-personal order identifier, optional selected network, invoice expiration, webhook callback URL, and browser return URL. It does not receive the customer's WordPress password or the merchant's webhook secret. Requests occur only when a customer starts a USDT payment or when the site verifies an invoice.<\/p>\n\n<p>USDPAY terms and privacy information are available at:<\/p>\n\n<ul>\n<li>https:\/\/usdpay.me\/legal\/terms<\/li>\n<li>https:\/\/usdpay.me\/legal\/privacy<\/li>\n<\/ul>\n\n<h3>Configure USDPAY<\/h3>\n\n<p>Create a dedicated Secret API Key and Webhook Secret in the USDPAY merchant dashboard. Add this callback URL to the matching store:<\/p>\n\n<pre><code>https:\/\/example.com\/wp-json\/usdpay-pmpro\/v1\/webhook\n<\/code><\/pre>\n\n<p>Replace <code>example.com<\/code> with the WordPress site domain. HTTPS is required in production.<\/p>\n\n<h3>Configure Paid Memberships Pro<\/h3>\n\n<p>Create a one-time paid, lifetime, or fixed-duration membership level. Select USDPAY in Memberships &gt; Settings &gt; Payments. The invoice amount is the final PMPro order total after standard discount and tax calculation.<\/p>\n\n<p>For <code>Customer chooses network<\/code>, no network is sent while creating the invoice. The USDPAY checkout lets the customer choose TRC20, TON, or BEP20.<\/p>\n\n<h3>Supported membership types<\/h3>\n\n<ul>\n<li>One-time paid memberships.<\/li>\n<li>Lifetime memberships.<\/li>\n<li>Memberships with a fixed PMPro expiration period.<\/li>\n<li>New and existing WordPress users.<\/li>\n<li>Standard PMPro discounts, including a final total of zero.<\/li>\n<li>Standard PMPro sales tax and final order totals.<\/li>\n<\/ul>\n\n<p>Free final totals use PMPro's normal free checkout flow and do not create a USDPAY invoice.<\/p>\n\n<h3>Recurring memberships<\/h3>\n\n<p>Automatic recurring crypto charges are not supported in version 1.0.0. USDPAY creates a separate invoice and cannot automatically debit a customer's wallet. Checkout is blocked for membership levels that require automatic recurring payments. No fake subscription IDs or automatic renewal cron jobs are created.<\/p>\n\n<h3>Refund limitations<\/h3>\n\n<p>Changing or cancelling membership access is separate from returning blockchain funds. Version 1.0.0 does not initiate automatic crypto refunds. Arrange any refund directly with the customer and record it according to the site's accounting process.<\/p>\n\n<h3>Security<\/h3>\n\n<ul>\n<li>API credentials stay on the WordPress server and are masked in settings.<\/li>\n<li>Webhooks are authenticated with HMAC-SHA256 over the raw request body.<\/li>\n<li>Signatures use timing-safe comparison.<\/li>\n<li>Webhook deliveries and membership fulfillment are protected by database uniqueness constraints.<\/li>\n<li>Browser return URLs never prove payment or activate membership.<\/li>\n<li>Paid Memberships Pro performs the final membership change and standard confirmation emails.<\/li>\n<\/ul>\n\n<h3>Troubleshooting<\/h3>\n\n<h4>The checkout says recurring payments are unavailable<\/h4>\n\n<p>Use a one-time, lifetime, or fixed-duration level. Automatic recurring debit is not supported.<\/p>\n\n<h4>The payment returns but membership is still pending<\/h4>\n\n<p>Confirm that the USDPAY webhook URL is correct, publicly reachable over HTTPS, and uses the Webhook Secret saved in WordPress. Browser return does not activate access.<\/p>\n\n<h4>The invoice cannot be created<\/h4>\n\n<p>Verify the Secret API Key, PMPro currency, outbound HTTPS connectivity, and the selected network. Enable debug logging temporarily with <code>WP_DEBUG<\/code> to record safe identifiers and error codes. Credentials and webhook payloads are never logged.<\/p>\n\n<h4>Does the plugin support upgrades or downgrades?<\/h4>\n\n<p>It supports changes where PMPro produces a final one-time order amount. Flows that require recurring proration or automatic subscription changes are not supported.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Paid Memberships Pro 3.5 or newer.<\/li>\n<li>Upload the <code>usdpay-for-paid-memberships-pro<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP in Plugins &gt; Add New.<\/li>\n<li>Activate USDPAY for Paid Memberships Pro.<\/li>\n<li>Open Memberships &gt; Settings &gt; Payments.<\/li>\n<li>Edit <code>USDPAY \u2014 USDT<\/code>, add the Secret API Key and Webhook Secret, and save.<\/li>\n<li>Select USDPAY as the primary payment gateway.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20currencies%20are%20accepted%3F\"><h3>Which currencies are accepted?<\/h3><\/dt>\n<dd><p>The plugin sends the current PMPro currency and final order total to USDPAY. USDPAY calculates the corresponding USDT amount. The plugin does not perform its own foreign exchange conversion.<\/p><\/dd>\n<dt id=\"is%20opening%20the%20return%20url%20enough%20to%20activate%20membership%3F\"><h3>Is opening the return URL enough to activate membership?<\/h3><\/dt>\n<dd><p>No. Membership activates only after a valid signed <code>invoice.paid<\/code> webhook.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20an%20invoice%20expires%3F\"><h3>What happens when an invoice expires?<\/h3><\/dt>\n<dd><p>The attempt and pending PMPro order are marked expired\/error. No membership is granted. The customer can start a new logical checkout attempt.<\/p><\/dd>\n<dt id=\"are%20historical%20payments%20deleted%20on%20uninstall%3F\"><h3>Are historical payments deleted on uninstall?<\/h3><\/dt>\n<dd><p>No. Plugin settings and secrets are removed, but PMPro orders, transaction identifiers, and payment-attempt history are retained for audit and reconciliation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>One-time, lifetime, and fixed-duration PMPro memberships.<\/li>\n<li>Hosted USDPAY checkout for TRC20, TON, and BEP20.<\/li>\n<li>Signed, idempotent webhook fulfillment.<\/li>\n<\/ul>","raw_excerpt":"Accept USDT payments in Paid Memberships Pro with USDPAY hosted checkout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=373061"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/probizi91"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373061"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373061"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373061"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373061"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373061"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}