{"id":352538,"date":"2026-09-04T21:36:18","date_gmt":"2026-09-04T21:36:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smartengin-buy\/"},"modified":"2026-09-04T21:35:54","modified_gmt":"2026-09-04T21:35:54","slug":"smartengin-buy","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/smartengin-buy\/","author":23470033,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.6","stable_tag":"1.6.6","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"smartEngin buy","header_author":"smartEngin","header_description":"Sell digital products from your own WordPress site: products, purchase options, cart, Stripe and PayPal, invoices with German small-business support, coupons and a customer account. Add \"smartEngin Courses\" to sell trainings, or upgrade to \"smartEngin Licence & buy\" to license your own software.","assets_banners_color":"fdfbfc","last_updated":"2026-09-04 21:35:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/smartengin.de\/smartengin-buy\/","header_author_uri":"https:\/\/smartengin.de\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.6.6":{"tag":"1.6.6","author":"businesskiai","date":"2026-09-04 21:35:54","revision":3681836}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3681838,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3681838,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3681838,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3681838,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"sels\/offer-cards":{"name":"sels\/offer-cards","title":"smartEngin Offer cards"}},"tagged_versions":["1.6.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3681838,"resolution":"1","location":"assets","locale":"","width":1219,"height":1135},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3681838,"resolution":"2","location":"assets","locale":"","width":1343,"height":877},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3681838,"resolution":"3","location":"assets","locale":"","width":1254,"height":1254},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3681838,"resolution":"4","location":"assets","locale":"","width":1246,"height":1071},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3681838,"resolution":"5","location":"assets","locale":"","width":1405,"height":1120},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3681838,"resolution":"6","location":"assets","locale":"","width":1145,"height":1374},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3681838,"resolution":"7","location":"assets","locale":"","width":1205,"height":1228},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3681838,"resolution":"8","location":"assets","locale":"","width":1448,"height":1086}},"screenshots":{"1":"Offer cards on a page: the visitor picks a purchase option and buys without leaving the page.","2":"Checkout with the payment methods you switched on \u2014 card via Stripe, PayPal, or the built-in test mode.","3":"The dashboard: revenue over time, the latest orders and a checklist of what is still missing.","4":"Creating a product and giving it purchase options \u2014 one-time price, monthly or yearly subscription.","5":"The invoice list: every paid order is invoiced automatically \u2014 re-open any invoice or send the customer a fresh link.","6":"An invoice with a gap-free number, ready to send or download.","7":"Coupons and discount codes \u2014 shared for a campaign, or unique per customer.","8":"The customer account: purchases, invoices and downloads, opened with a magic link instead of a password."}},"plugin_section":[],"plugin_tags":[5346,282,16236,334,5349],"plugin_category":[45],"plugin_contributors":[259512],"plugin_business_model":[],"class_list":["post-352538","plugin","type-plugin","status-publish","hentry","plugin_tags-digital-downloads","plugin_tags-ecommerce","plugin_tags-invoices","plugin_tags-paypal","plugin_tags-stripe","plugin_category-ecommerce","plugin_contributors-businesskiai","plugin_committers-businesskiai"],"banners":{"banner":"https:\/\/ps.w.org\/smartengin-buy\/assets\/banner-772x250.png?rev=3681838","banner_2x":"https:\/\/ps.w.org\/smartengin-buy\/assets\/banner-1544x500.png?rev=3681838","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smartengin-buy\/assets\/icon-128x128.png?rev=3681838","icon_2x":"https:\/\/ps.w.org\/smartengin-buy\/assets\/icon-256x256.png?rev=3681838","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-1.png?rev=3681838","caption":"Offer cards on a page: the visitor picks a purchase option and buys without leaving the page."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-2.png?rev=3681838","caption":"Checkout with the payment methods you switched on \u2014 card via Stripe, PayPal, or the built-in test mode."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-3.png?rev=3681838","caption":"The dashboard: revenue over time, the latest orders and a checklist of what is still missing."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-4.png?rev=3681838","caption":"Creating a product and giving it purchase options \u2014 one-time price, monthly or yearly subscription."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-5.png?rev=3681838","caption":"The invoice list: every paid order is invoiced automatically \u2014 re-open any invoice or send the customer a fresh link."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-6.png?rev=3681838","caption":"An invoice with a gap-free number, ready to send or download."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-7.png?rev=3681838","caption":"Coupons and discount codes \u2014 shared for a campaign, or unique per customer."},{"src":"https:\/\/ps.w.org\/smartengin-buy\/assets\/screenshot-8.png?rev=3681838","caption":"The customer account: purchases, invoices and downloads, opened with a magic link instead of a password."}],"raw_content":"<!--section=description-->\n<p>smartEngin buy turns your own WordPress site into a shop for digital products \u2014 documents, e-books, templates, any file you sell. There is no marketplace in between: your site takes the payment, writes the invoice and serves the download.<\/p>\n\n<p><strong>No commission per sale. No foreign branding. No customer data at a third party.<\/strong> Everything runs in your own database; the only outside parties are the payment providers you switch on.<\/p>\n\n<p><strong>What you can sell<\/strong><\/p>\n\n<ul>\n<li>Files \u2014 PDF, ZIP, images, audio, video, office documents: everything WordPress itself accepts as an upload. Delivered through short-lived signed links, never a public URL.<\/li>\n<li>One-time purchases and subscriptions, monthly or yearly.<\/li>\n<li>Several items in one order, with a cart and a single payment.<\/li>\n<\/ul>\n\n<p><strong>Selling and getting paid<\/strong><\/p>\n\n<ul>\n<li>Offer cards on any page \u2014 the block \"smartEngin Offer cards\" or <code>[sels_cards product=\"your-product-slug\"]<\/code>. Buyers never leave the page.<\/li>\n<li>Stripe and PayPal, including subscriptions and Stripe's redirect methods (Klarna, Amazon Pay, Bancontact, eps \u2026).<\/li>\n<li>A test mode that runs a complete purchase \u2014 order, invoice, customer account, download \u2014 without a payment provider, so you can try everything before going live.<\/li>\n<li>Coupons and discount codes, shared for a campaign or unique per customer.<\/li>\n<li><code>[sels_preis]<\/code> writes the current price into your running text, so a price change leaves no stale number on a landing page.<\/li>\n<\/ul>\n\n<p><strong>Invoices and bookkeeping<\/strong><\/p>\n\n<ul>\n<li>Invoices with gap-free, frozen numbers, plus credit notes. They are printable HTML pages that any browser saves as PDF \u2014 no PDF library involved, so nothing breaks when a server lacks one.<\/li>\n<li>A small-business tax mode for the German \u00a7 19 UStG rule, with the required sentence on the invoice.<\/li>\n<li>Refund a payment in Stripe or PayPal and the matching credit note is written here automatically.<\/li>\n<li>A payment check that lists only the orders where something does not add up. An empty screen means everything went through cleanly.<\/li>\n<\/ul>\n\n<p><strong>Your customers<\/strong><\/p>\n\n<ul>\n<li>A customer account with magic-link sign-in: purchases, invoices and downloads in one place, no password.<\/li>\n<li>Automatic renewal and expiry reminders for subscriptions.<\/li>\n<\/ul>\n\n<p><strong>Setting it up with an AI assistant<\/strong><\/p>\n\n<p>Stripe keys, webhooks, tax settings, invoice numbers \u2014 that is where most people get stuck. Under \"Help &amp; docs\" one click copies a briefing about <em>your<\/em> installation into ChatGPT or Claude, which then tells you what is still missing. No account, no setup, nothing leaves your site. If your assistant can read online by itself, an optional read-only connection lets it check your settings directly: off until you switch it on, never exposing a secret, never able to change anything, and it closes itself when its short-lived code expires.<\/p>\n\n<p><strong>Extensions<\/strong><\/p>\n\n<ul>\n<li><em>smartEngin Courses<\/em> adds trainings, courses and videos with a member area, sold through this plugin. https:\/\/smartengin.de\/smartengin-courses\/<\/li>\n<li><em>smartEngin Licence &amp; buy<\/em> is the same core plus licence keys, activation limits and an update server for software you sell. It replaces this plugin; your data stays. https:\/\/smartengin.de\/smartengin-licence-buy\/<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to external services only when YOU switch them on and only to take a payment. Nothing is transmitted while they are switched off.<\/p>\n\n<p><strong>Stripe<\/strong><\/p>\n\n<p>Used to take card payments and subscriptions when you enter your Stripe keys under Settings \u2192 Payment providers.<\/p>\n\n<ul>\n<li>What is sent, and when: at the moment a customer starts a payment, your server sends the amount, the currency, your order number and the customer's e-mail address to Stripe's API at <code>https:\/\/api.stripe.com<\/code>. Card details are entered in Stripe's own form and go directly to Stripe \u2014 the plugin never sees or stores them.<\/li>\n<li>The checkout page loads Stripe's JavaScript library from <code>https:\/\/js.stripe.com<\/code> \u2014 in the visitor's browser, and only once that visitor has actually started a card payment, never on page load. Stripe then reports the result of the payment back to your site.<\/li>\n<li>Domains contacted: <code>api.stripe.com<\/code> (from your server), <code>js.stripe.com<\/code> (from the visitor's browser). No other Stripe address is used.<\/li>\n<li>Service provided by Stripe, Inc. \u2014 <a href=\"https:\/\/stripe.com\/legal\/ssa\">terms of service<\/a>, <a href=\"https:\/\/stripe.com\/privacy\">privacy policy<\/a>.<\/li>\n<\/ul>\n\n<p><strong>PayPal<\/strong><\/p>\n\n<p>Used to take PayPal payments and subscriptions when you enter your PayPal credentials under Settings \u2192 Payment providers.<\/p>\n\n<ul>\n<li>What is sent, and when: at the moment a customer starts a payment, your server sends the amount, the currency and your order number to PayPal's API at <code>https:\/\/api-m.paypal.com<\/code> \u2014 or at <code>https:\/\/api-m.sandbox.paypal.com<\/code> while you are testing with sandbox credentials. The customer signs in with PayPal directly; the plugin never sees those credentials.<\/li>\n<li>The checkout page loads PayPal's JavaScript SDK from <code>https:\/\/www.paypal.com<\/code> \u2014 in the visitor's browser, and only once that visitor has actually started a PayPal payment, never on page load. PayPal then reports the result of the payment back to your site.<\/li>\n<li>Domains contacted: <code>api-m.paypal.com<\/code> (or <code>api-m.sandbox.paypal.com<\/code> in sandbox mode) from your server, and <code>www.paypal.com<\/code> from the visitor's browser. No other PayPal address is used.<\/li>\n<li>Service provided by PayPal, Inc. \u2014 <a href=\"https:\/\/www.paypal.com\/legalhub\/useragreement-full\">user agreement<\/a>, <a href=\"https:\/\/www.paypal.com\/myaccount\/privacy\/privacyhub\">privacy statement<\/a>.<\/li>\n<\/ul>\n\n<p>No other external service is contacted. The plugin does not phone home, does not collect statistics and does not load fonts, scripts or images from anywhere else.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores what a purchase needs: name, e-mail address, billing address when your invoice settings require one, the ordered items and the invoice. This data lives in tables on your own site and is never sent anywhere but to the payment provider handling that payment.<\/p>\n\n<p>Invoices are kept because tax law requires it; they are not deleted automatically. Secret keys (Stripe, PayPal) are never exported, never shown again after saving and never included in any support or setup output.<\/p>\n\n<p>Beyond the purchase itself, the plugin keeps two short technical logs on your own site \u2014 for you as the site owner, and for nobody else:<\/p>\n\n<ul>\n<li>A security log of sign-in attempts, both to the WordPress backend and to the passwordless customer account. It records what was typed in (username or e-mail address), the visitor's IP address, the result and the time \u2014 that is what makes a repeated attack visible on the Security screen. Passwords are never stored, and no payment data ever reaches it. These rows are deleted automatically after a retention period you set yourself: 90 days by default, seven at the least.<\/li>\n<li>An access log for the optional read-only connection an AI assistant can use to help you set the shop up (smartEngin buy \u2192 REST API). That connection is switched off until you enable it and generate a short-lived code, and it switches itself back off when that code expires; while it is on, the last 30 accesses are kept with address, route and result. It is capped at 30 entries and is removed whenever the plugin is uninstalled, together with the connection settings and the code.<\/li>\n<\/ul>\n\n<p>Neither log is sent anywhere. \"Remove all data\" on uninstall clears both, along with everything else the plugin stored.<\/p>\n\n<!--section=installation-->\n<p><strong>1. Install and activate.<\/strong> Plugins \u2192 Add New \u2192 Upload, or copy the <code>smartengin-buy<\/code> folder to <code>\/wp-content\/plugins\/<\/code>. A menu \"smartEngin buy\" appears.<\/p>\n\n<p><strong>2. Settings.<\/strong> Sender name and address for the invoices, your tax mode (standard or the German \u00a7 19 small-business rule) and the prefix for your invoice numbers. Set the prefix before the first sale \u2014 numbers are frozen once issued.<\/p>\n\n<p><strong>3. Add a product.<\/strong> Products \u2192 Add: a name, at least one purchase option (one-time, monthly or yearly) and the file the buyer receives.<\/p>\n\n<p><strong>4. Put the offer cards on a page.<\/strong> The block \"smartEngin Offer cards\", or <code>[sels_cards product=\"your-product-slug\"]<\/code>. That is the whole shop front.<\/p>\n\n<p><strong>5. Try it in test mode first.<\/strong> Test mode is on until you switch it off. Buy your own product and you get the order, the invoice, the mail and the download \u2014 without a payment provider and without money moving.<\/p>\n\n<p><strong>6. Then switch on real payments.<\/strong> Enter your Stripe or PayPal credentials \u2014 <strong>and set up the webhook the settings screen shows you.<\/strong> That is not optional: subscriptions, refunds and payments that send the buyer to another site (Klarna, Amazon Pay \u2026) are confirmed by the webhook, not by the browser. Without it a paid order can stay open. Test and live mode need separate webhooks at both providers.<\/p>\n\n<p>Not sure whether everything is done? The Dashboard shows a checklist of what is still missing, and \"Help &amp; docs\" explains every screen.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20it%20cost%3F\"><h3>What does it cost?<\/h3><\/dt>\n<dd><p>Nothing, with no time limit, and no commission on your sales. Only your payment provider charges its usual fee.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20account%20with%20an%20external%20service%3F\"><h3>Do I need an account with an external service?<\/h3><\/dt>\n<dd><p>Only to take real money. Stripe and PayPal are optional and switched off until you enter your credentials. The test mode runs a complete purchase without either.<\/p><\/dd>\n<dt id=\"what%20kinds%20of%20file%20can%20i%20sell%3F\"><h3>What kinds of file can I sell?<\/h3><\/dt>\n<dd><p>Everything WordPress itself accepts as an upload: PDF, ZIP, images, audio, video, office documents and so on. Executable software (EXE, MSI, DMG, APK) is not among them \u2014 WordPress blocks those uploads and this plugin does not widen the list.<\/p><\/dd>\n<dt id=\"do%20i%20really%20have%20to%20set%20up%20a%20webhook%3F\"><h3>Do I really have to set up a webhook?<\/h3><\/dt>\n<dd><p>Yes, as soon as you take real money. Subscription renewals, refunds and every payment method that sends the buyer to another site are reported by the provider directly to your site, not by the buyer's browser \u2014 without the webhook a paid order can stay open. The settings screen shows the exact address; test and live mode need one each.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20refund%20a%20customer%3F\"><h3>What happens when I refund a customer?<\/h3><\/dt>\n<dd><p>Refund the payment in Stripe or PayPal; their webhook then writes the matching credit note here and updates the order. Provider events are never retroactive, so a refund made before the webhook existed produces none.<\/p><\/dd>\n<dt id=\"are%20the%20invoices%20pdf%20files%3F\"><h3>Are the invoices PDF files?<\/h3><\/dt>\n<dd><p>They are printable HTML pages, which every browser saves as PDF.<\/p><\/dd>\n<dt id=\"where%20is%20my%20customer%20data%20stored%3F\"><h3>Where is my customer data stored?<\/h3><\/dt>\n<dd><p>In its own database tables on your site. Nothing is sent anywhere except to the payment provider you switched on, and only what that payment needs.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20subscriptions%3F\"><h3>Does it work with subscriptions?<\/h3><\/dt>\n<dd><p>Yes. Monthly and yearly subscriptions run through Stripe or PayPal, and the plugin keeps access, invoices and reminders in step with them.<\/p><\/dd>\n<dt id=\"can%20i%20sell%20online%20courses%20with%20it%3F\"><h3>Can I sell online courses with it?<\/h3><\/dt>\n<dd><p>Yes, with the free add-on <em>smartEngin Courses<\/em>: trainings, courses, videos and a member area, sold through this plugin's checkout.<\/p><\/dd>\n<dt id=\"can%20it%20license%20my%20own%20software%3F\"><h3>Can it license my own software?<\/h3><\/dt>\n<dd><p>Not this plugin. That is what <em>smartEngin Licence &amp; buy<\/em> is for \u2014 the same core plus licence keys, activation limits and an update server.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20switch%20to%20smartengin%20licence%20%26%20buy%2C%20or%20back%3F\"><h3>What happens when I switch to smartEngin Licence &amp; buy, or back?<\/h3><\/dt>\n<dd><p>The two are the same core and share their data tables, so they must never run side by side \u2014 loading both would break the site with duplicate class names. This plugin therefore never touches the other one: if smartEngin Licence &amp; buy is active, activating this plugin is refused with a message asking you to deactivate that one first. You stay in control of which plugin runs, and nothing is deleted in either direction \u2014 products, orders, invoices, coupons and customer accounts are picked up unchanged.<\/p><\/dd>\n<dt id=\"my%20site%20runs%20behind%20cloudflare%20or%20another%20proxy%2Fcdn%20%E2%80%94%20anything%20to%20watch%20out%20for%3F\"><h3>My site runs behind Cloudflare or another proxy\/CDN \u2014 anything to watch out for?<\/h3><\/dt>\n<dd><p>The plugin identifies visitors by the address the web server reports, on purpose: forwarded headers can be faked, and the abuse brakes and the security log must not be foolable. Most hosts restore the real visitor address automatically. If yours does not, every visitor appears to come from the proxy \u2014 the security log becomes useless and the purchase-attempt brake can catch genuine buyers. Ask your host to enable real-IP restoration (mod_remoteip, real_ip or their Cloudflare integration).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.6<\/h4>\n\n<ul>\n<li>First release in the WordPress Plugin Directory. This is a mature code base that was distributed from smartengin.de before joining the directory, so the version number does not start at 1.0 \u2014 the full history of every earlier version is in changelog.txt inside the plugin folder.<\/li>\n<li>The most recent work: redirect payment methods (Klarna, Amazon Pay, Bancontact, eps) now work for one-off purchases; the read-only AI connection closes itself when its code expires; and a round of security hardening in which every printed value is escaped at the point of output.<\/li>\n<\/ul>","raw_excerpt":"Sell digital products from your own site: cart, Stripe and PayPal, invoices, coupons, customer accounts. No marketplace, no fee per sale.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352538","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=352538"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/businesskiai"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352538"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352538"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352538"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352538"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352538"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}