This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

PAYMILL for WordPress



  • PHP 5.3 or higher
  • WordPress 4.8.x or higher
  • CuRL PHP extension

Supported Shops including subscriptions support:

  • WooCommerce (2.6.13) + WooCommerce Subscriptions (2.0.13)
  • Magic Members (1.8.x)
  • Pay Button (independent, light-weight payment form)

Supported Shops without subscriptions support (yet):

  • ShopPlugin (1.3.5)
  • MarketPress (2.9.x)
  • Cart66 Lite (

Service Description

PAYMILL offers the fastest and easiest way to accept payments online. The innovative payment solution enables online businesses and services to integrate payments into their websites within a very short time. The developer-friendly REST API is flexibly integrable. Customize the check-out process the way you want or use the PAYMILL PayButton which allows an even easier integration. Super-fast account activation within a few days only. Top-notch customer support. Subscriptions supported and Mobile SDKs for iOS and Android available. Accept payments in up to 100 currencies. All major card brands like MasterCard, VISA, American Express, Diner’s Club, Maestro etc. supported. Available in 40 countries across Europe so far.

Pay Frame

We’ve introduced a “payment form” option for easier compliance with PCI requirements.

In addition to having a payment form directly integrated in your checkout page, you
can use our embedded PayFrame solution to ensure that payment data never
touches your website.

PayFrame is enabled by default, but you can choose between both options in the
plugin settings. Later this year, we’re bringing you the ability to customise the
appearance and text content of the PayFrame version.

To learn more about the benefits of PayFrame, please visit our FAQ:


End of Service

Please note, that there is currently no support available for this plugin through it’s creators, the straightvisions GmbH. Reason is that service contract with Paymill has not been renewed, there are currently no updates or patches ordered or planned for this repository. If you have any questions or issues using this plugin, please contact Paymill support directly.

Missing a feature?

Please use the plugin support forum here on We will add your wished – if realizable – on our todo list. Please note that we can not give any time estimate for that list or any feature request.

Paid Services

Nevertheless, feel free to hire the plugin author Matthias Reuter if you need to:

  • get a customization
  • get a feature rapidly / on time
  • get a custom WordPress plugin developed to exactly fit your needs.


Error: Paymill can be loaded once only on the same page.

This error is self explaining but still might be a bit confusing, as some users will be sure that there is no doubled call of the payment form. There actually is one. For example: you may have the Paybutton widget in a sidebar which is loaded, but hidden by a sidebarmanager. In most cases, some plugins or themes cause this issue, so you may want to try deactivating all plugins except Paymill and try a default theme. Our development site is using Mystile from Woothemes, a free theme which is also certified for WooCommerce compatibility.

When logging into Paymill Dashboard, once activated Test Mode is switched back to Live Mode

Test Mode and Live Mode are both always active simultaneously. Even if the Dashboard is showing Live Mode upon (re-)login per default, both modes remain active, even when switching to Test Mode and vice versa.

How can I log API Requests for Subscription Handling?

If you feel subscriptions are not handled as intended, you’ll find logs in directory /wp-content/paymill/lib/debug/
You may need to CHMOD 777 logging files to enable logging.

What will be logged when enabling plugin logging*

  • all PHP Errors and Notices since start of the plugin
  • supported and activated webhooks
  • Subscription Cancellation through WooCommerce
  • Subscription Pause (on Hold) through WooCommerce
  • Subscription Reactivation through WooCommerce


  • Common Settings
  • Payment Form
  • Pay Button
  • Pay Button Common Settings
  • Pay Button Products Settings
  • Pay Button Shipping Settings
  • Cart66 lite Payment Form


There is a manual included in English and German as PDF. But in short:

  1. Upload paymill-directory to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Register a free account on
  4. Insert TEST Api Keys for testing purposes in plugin settings
  5. Integrate the widget somewhere in your wordpress. Without one of the supported shops, the easiest method is the pay button, available in the admin interface at Design » Widgets, or as a shortcode (see FAQ) for individual pages.
  6. Play around in test mode.
  7. If you are happy how the plugin works, enable your live account on – this could take a couple of days.
  8. After your paymill account has been activated for LIVE mode, switch your account to live and replace your TEST API Keys with your LIVE API Keys in plugin settings.


Is this plugin for free?

This plugin is for free and licensed to GPL.
It’s open source following the GPL policy.

How can I revert all changes or reset the plugin?

Paymill for WordPress brings an uninstall routine which allows completely removing all data generated by the plugin from WordPress. This is a great feature for a plugin reset, too which helps if there were upgrade or go live issues. You just have to go to your WordPress Admin Dashboard -> Plugins Overview and deactivate Paymill for WordPress. After that, a “delete” Link will appear which allows completely removing Paymill for WordPress.

Does this plugin calls to another server?

Yes. As Pamill is a payment service provider, it is absolutely required to call home to make sure that the payments are valid.
We are talking about three different reasons for calling home:

  1. PAYMILL Javascript Bridge makes sure that payment data is correct and creates a payment token delivered to your server after checkout. This avoids delivering payment data to your server, what is -in most cases- absolutely prohibited by all common credit card providers.
  2. PAYMILL PHP Bridge finishes the order and delivers the generated token to the PAYMILL server.
  3. For security purposes there is a feature which delivers WordPress version number and PAYMILL Plugin version number upon payment process. This will give us the ability to warn paymill merchants who are using a very outdated WordPress version or about known security holes in specific version when still using them.
Are there any fees for payments?

Merchants must create an account on to use the payment service.
The TEST mode is for free, but there are “per payment” fees in LIVE mode, see

Do customers need to create an account for payment?

No. PAYMILL allows payments without annoying your customers creating an account.
They’ll just fill out the payment fields on your checkout-page – that’s all.

Does this plugin redirects the users to PAYMILL for payment?

No. PAYMILL allows payment directly through your website without any extra redirects etc.

Does this plugin supports 3D secure?

Yes. Please note that you can test 3D secure feature on LIVE mode only.
The TEST mode always gives a positive feedback on 3D secure.

Which Credit Cards are supported?

Depending on your country and account status, the following credit card provider are currently supported: American Express, CB, Diners Club, Discover, JCB, Maestro, MasterCard, VISA

What is SEPA and why it’s supported?

SEPA is a European banking service and stands for “Single Euro Payments Area”.
This is a very convenience payment solution for European users, as credit cards are not very common in Europe compared to e.g. USA.

Is there a update-safe way to edit language files?

Yes, just copy language files from /wp-content/plugins/paymill/lib/translate/ as draft to customize into /wp-content/languages/paymill/

Can I use shortcodes to display the Pay Button?

Yes, here’s an example shortcode with all currently available parameters: ‘[paymill_pb title=”test title” products_list=”1,2″]’

Are there actions/filters/hooks in the Pay Button?

Yes, all of them have 1 parameter as array with several vars.
You may use var_dump to get their content and structure.

  • paymill_paybutton_client_created
  • paymill_paybutton_client_updated
  • paymill_paybutton_subscription_created
  • paymill_paybutton_order_complete
  • paymill_paybutton_order_desc
  • paymill_paybutton_client_desc
  • paymill_paybutton_email_text
How can I customize the Pay Button?

The Pay Button is made for customizing and you should make intensive use of CSS to cutomize it.

Additionally, you may want to replace the default order form with your own. Create a
custom theme file on ‘THEME_DIR/paymill/pay_button.php’ (it will replace ‘/paymill/lib/tpl/pay_button.php’)

Does WooCommerce Subscriptions Integration allows setup fees? How are Coupons applied?

Yes, but it’s working through a workaround. There are two transactions made, one for the subscription and one for initial fee.
Subscriptions fee cannot be changed, even through coupons. Please be aware that coupons are working on initial fee only.


September 3, 2016 7 replies
Hi Matthias, thank you for great work with this plugin. I have it installed at and there is a problem with german language version, that there is still all in english. Thanks, Filip


September 3, 2016 1 reply
Sorry, but this is really shitty plugin. Caused me to waste few hours to find why it’s not working while returning error about token. Hell why did you commented scripts action? // load frontend scripts // add this action when the payment form is viewed // add_action('wp_enqueue_scripts', 'paymill_load_frontend_scripts'); // or if above doesn't work, try this: // paymill_load_frontend_scripts(); Did you wrote it yourself or just copy-pasted code found in Google? Also there’s an invention called “space” – it’s a big horizontal bar on your keyboard and it’s used to put actual space into the code to make it a little more readable.
September 3, 2016
This plugin works great and have given me zero problems. I was using a paid Paymill plugin for Woocommerce and I had problems with payments failing randomly. This plugin solved all those problems! Great job author!!
Read all 17 reviews

Contributors & Developers

“PAYMILL for WordPress” is open source software. The following people have contributed to this plugin.




Please note, that there is currently no support available for this plugin through it’s creators, the straightvisions GmbH. Reason is that service contract with Paymill has not been renewed, there are currently no updates or patches ordered or planned for this repository. If you have any questions or issues using this plugin, please contact Paymill support directly.


  • WooCommerce: several bugs fixed


  • WooCommerce: bug fixed: checkout submit action error
  • Bridge: compatibility to new standard


  • WooCommerce: Webhook Failure improvements
  • WooCommerce: Better Multi-Step-Checkout support
  • PayButton: Error on Checkout fixed


  • Readme: ELV support no longer listed
  • WooCommerce: Error while Webhook Execution fixed


  • Common: Advanced Settings added
  • Common: “Do not load CSS” moved to Advanced Settings
  • Common: New Advanced Settings: Set “Custom Form Key” and “Custom Submit Key”
  • WooCommerce: Support for WooCommerce Subscriptions 2.0
  • WooCommerce: Unnecessary Preauthorization for single credit card payments removed
  • WooCommerce: PayPal support added
  • PayButton: “Parameter is mandatory” issue fixed
  • PayButton: Amount of products limited to 10 fixed to unlimited again


  • WooCommerce: Doubled payments issue fixed
  • WooCommerce: Client handling for guest orders fixed


  • WooCommerce: Zero Amount Error fixed


  • MarketPress: Error upon payment activation fixed
  • WooCommerce: Official support for custom intervals (e.g. every 3rd month) added
  • WooCommerce: Different bugs in order processing and subscription handling fixed


  • Common: Integration of PayFrame to enable use of SAQ A for easier PCI DSS 3.0 compliance.


  • Subscriptions: “required_offer_or_amount_and_currency_and_interval” error fixed


  • WooCommerce: Error Management Fix
  • Common: Checkout Form fix


  • WooCommerce: Error Management on Checkout fixed
  • WooCommerce: Subscription Handling reviewed and optimized
  • Common: Support for PCI DSS 3.0 (iframe-based credit card form)
  • WooCommerce: Several improvements and bugfixes


  • Common: Update to v2.1 Paymill API
  • WooCommerce: Support for Subscription Product End Settings, only newly created subscriptions will be affected. Old subscriptions need to be terminated manually on Paymill Dashboard
  • WooCommerce: Support for Subscription pause/start, thanks to
  • WooCommerce: Several minor bugfixes contributed by


  • WooCommerce: Support for javascript based Multi-Step-Checkout like in “Bazar Shop”)
  • WooCommerce: Subscriptions-Support added for order delivery date plugin


  • Common: Benchmark error fixed


  • WooCommeerce: 3Dsecure amount mismatch issue fixed
  • WooCommerce: Separated Payment for order feature support
  • Common: Debug Mode now has no effect when not activated


  • Cart66: Final released
  • Common: Some Error Messages were not displayed – fixed


  • Common: ELV/SEPA issue in checkout fixed


  • Cart66: Alpha released
  • WooCommerce: Now shows shop domain in transaction description of Paymill dashboard.
  • Common: Several minor fixes and tweaks.


  • MarketPress: Final released
  • WooCommerce: Subscription Cancellation within WooCommerce “My Account” page results in error – fixed


  • MarketPress: Beta released
  • Common: Allows overriding language files by placing them into /wp-content/languages/paymill/
  • PayButton: Order Form optimized
  • PayButton: Feature for price/currency format
  • Shopp: Paymill as Payment Gateway wasn’t recognized due to last changes in shopplugin – fixed
  • Shopp: Errors wasn’t shown on checkout process – fixed
  • Shopp: Compatibility with new checkout button achieved


  • WooCommerce: Issue with order completion fixed


  • WooCommerce: Switching live/test-modes results in “offer not found” – fixed
  • Common: Error Management issues fixed
  • MarketPress: Alpha included


  • WooCommerce: Maintenance tab added to check webhook status.
  • Common: Translation issues fixed
  • Common: Don’t load default CSS feature fixed
  • Common: “Client not found” issue fixed


  • Common: Preauths for credit card validation will no longer stay when unused. They will be used (and differences refunded) or removed.
  • WooCommerce: pay-per-payment support for subscriptions


  • WooCommerce: inactive checkout button fixed


  • Common: Minor bugs fixed
  • Common: Paymill logo now inside checkout form to give payment logos more space.


  • WooCommerce: order status for normal products (non-subscription) did not switched to processing after payment – fixed
  • Common: Payment Type Buttons will appear more intelligent


  • WooCommerce: support for German Market added


  • Major Update!
  • Common: payment channel SEPA added
  • Common: update to new API PHP Wrapper
  • Common: better theme support
  • MagicMembers: released as final
  • WooCommerce: many bugs fixed, support for webhooks added
  • PayButton: completely rewritten


  • Common: “Fatal error: Call to a member function payment_complete() on a non-object” fixed


  • Common: Installation Manual updated
  • Common: “Error Multiple Primary Key Defined” on Update fixed
  • WooCommerce: Checkout form background color fixed
  • WooCommerce: Error “notDigits: ‘-16045’ must contain only digits” fixed
  • Pay Button: Submit Button will be hidden on submit (and shown again by error) to avoid double orders.
  • Magic Members: Beta available. The B in beta stands for bugs, so please don’t use magic members in live environments.


  • Common: Payment processing totally rewritten making it more robust
  • Common: Clicking on another area than submit button could submit form – fixed
  • Common: Serbo-Croatic Translation added (thanks to Borisa Djuraskovic
  • WooCommerce: minor bugfixes
  • WooCommerce: More control about visibility of payment icons in checkout form
  • Shopplugin: Critical error fixed
  • Shopplugin: reworked payment form
  • Pay Button: New feature allows redirect to custom thank your URL
  • Pay Button: New actions and hooks added for triggering custom functions or customizing order confirmation mail


  • WooCommerce: Rounding issue fixed


  • Common: Minor Fix


  • Common: Critical Fix when using 1.4.1, please update immediately to 1.4.2.


  • Common: Javascript-Handling on Checkout-Process optimized making it more robust
  • Common: MASSIVELY improved Error Handling
  • Common: Payment Form Design optimized
  • Common: Changed Language Pack from en_GB to en_US as this is WordPress’ default language
  • Pay Button: Subscriptions-Select-Field can be hidden now, too
  • Pay Button: Subscriptions Translation Issue fixed on payment form
  • Pay Button: Action added: paymill_paybutton_order_complete, args: $order_id, $transaction, $_POST
  • Pay Button: Now supports custom theme file on THEME_DIR/paymill/pay_button.php (replaces /paymill/lib/tpl/pay_button.php)
  • Pay Button: Now allows hiding certain fields
  • Pay Button: Now allows to prevent loading the default styles
  • Magic Members: Pre Alpha version included (don’t use it except you know what you do!)


  • Subscription support added for WooCommerce Subscriptions addon
  • Allows hiding quantity field in pay button widget


  • Creditcard / ELV Switch Display issue fixed
  • Translating issues fixed
  • WooCommerce Bug on checkout page fixed
  • Pay Button show/hide blocks links fixed


  • MasterCard Logo and Payment Bug fixed
  • error reporting fixed (thanks to Jan R.)
  • notifies with wrong payment data in Pay Button fixed
  • credit card button visibility fixed


  • several PHP notices fixed
  • WooCommerce issue fixed (selection of other payment gateway didn’t work on checkout page)
  • Subscription Support for Pay Button


  • several PHP notices fixed
  • incompatibility with Yootheme Cloud Theme (and maybe other themes) fixed
  • unsaved Settings for Payment Gateway in WooCommerce fixed
  • Payment Type Logo Selection added


Shopplugin support added


Pay Button added


WooCommerce support added