New: dashboard widget showing the open TWINT payments (amount, customer reports, age of the oldest) and the payments received in the last 30 days, with a shortcut to the payments overview.
1.6.1
Fixed: orders were marked as reminded even when the reminder email failed to send; they are now retried on the next run.
Fixed: auto-cancelling no longer cancels orders where the customer has reported “I have sent the payment” – those require manual review.
1.6.0
New: “TWINT payments” overview under the WooCommerce menu – all open (unpaid) TWINT orders with amount, customer, age, the matching instruction per flow and a one-click “Payment received” button.
New: optional one-time payment reminder email for unpaid orders (days configurable; off by default). Customers who already reported their payment are not reminded.
New: optional auto-cancelling of unpaid TWINT orders after a configurable number of days (off by default); the stock is released automatically.
New: customers can report “I have sent the payment” on the thank-you page and under My account. The report is shown on the order, in the payments overview and never changes the order status.
New: payment instructions (number/QR/reference) are also shown under My account → View order while the payment is pending.
New: “Paid with TWINT on [date]” note on PDF invoices (WooCommerce PDF Invoices & Packing Slips) – only when the order is actually paid.
New: in the “I request” flow, the “New order” admin email now contains the customer’s TWINT number, the amount and the reference.
New: the gateway settings only show the fields relevant to the selected flow.
Fixed: the phone-number hint in the block checkout appeared in German on non-German sites.
Fixed: the phone-number field in the block checkout overflowed the payment method box.
Fixed: the QR code in emails is now limited to a sensible size (email clients do not load the plugin stylesheet).
Changed: currency symbols in plain-text emails are no longer HTML-encoded.
1.5.1
Fixed: the configuration notice (“Customer sends” flow active but no number or QR code set) stayed visible after switching to “I request” until the next page load; the cached gateway settings are now refreshed on save.
Changed: Plugin URI now points to the plugin landing page instead of the GitHub repository.
Internationalisation: the bundled German translation is now split into de_DE (German spelling) and de_CH (Swiss spelling).
1.5.0 – wordpress.org Welcome Release!
Internationalisation: the plugin now uses English source strings, with German, French (CH) and Italian (CH) shipped as proper translations. This lets translate.wordpress.org handle translations correctly – the previous German source strings prevented that. No functional changes.
1.4.3
Wording: clarified that the plugin itself needs no TWINT API key or acquiring contract, while shop operators remain responsible for their own TWINT, bank and merchant terms for commercial use.
Removed “TWINT logo” phrasing from older changelog notes to avoid trademark ambiguity; the plugin icon is a custom Blueforce design.
Updated the translation template and metadata to the current version.
Hardening: the selected workflow (send/request) is normalised to a known value on load and save; block checkout data is sanitised before it is passed to the front end.
Packaging/CI: the build script now verifies that development, test, repo and WordPress.org asset folders never end up in the distributed plugin ZIP; PHP lint is limited to the actual plugin files.
Cleanup: added uninstall.php so deleting the plugin removes its stored gateway settings (order data is kept).
Consistency: aligned the license notation between the plugin header and readme, and updated remaining internal doc comments to the current plugin name.
Privacy/hardening: in the “Customer sends” workflow the block checkout no longer stores a customer phone number server-side, even if a manipulated client submits the field – matching the classic checkout and the stated privacy behaviour.
1.4.2
Coding standards: renamed the gateway class to use the plugin prefix (BF_TWINT_Gateway).
Header: shortened the plugin description to under 140 characters, added “Requires Plugins: woocommerce”, and updated “WC tested up to”.
Packaging: include composer.json in the distributed plugin; keep GitHub-only docs (README.md, CHANGELOG.md) out of the ZIP.
No functional changes.
1.4.1
Security/hardening: escape settings field output late with wp_kses_post() (tooltip and description HTML in the QR image field); removed the corresponding phpcs:ignore annotations. No functional changes.
1.4.0
Renamed to “Blueforce Manual Payments for TWINT” and prepared for the WordPress.org plugin directory.
Removed the previous GitHub-based update mechanism; the plugin no longer makes external calls.
No functional changes to checkout, workflows or privacy.
1.3.0
Order snapshot: workflow, number, account holder, QR image and notes are frozen per order – thank-you page, email and admin stay correct even if the settings are changed later.
Block checkout: TWINT is now correctly hidden for foreign currencies (as in the classic checkout).
Privacy: customer number is included in data export/erasure; privacy policy snippet added.
Admin notice for incomplete configuration; real plain-text email; centralised phone validation/normalisation.
Accessibility improvements; inline styles moved to CSS; “Mark as paid” button restricted to authorised roles, with a logged note.
CI: PHP lint, WordPress Coding Standards and ZIP build test.
1.2.0
“Mark as paid” button in the order screen: release a TWINT order as paid with one click.
French (fr_CH) and Italian (it_CH) translations – including block checkout.
Copy button for the order number on the thank-you page (fewer typos in the TWINT message).
TWINT is only shown when the shop currency is CHF (filter “bf_twint_is_available” to override).
1.1.2
Security: additional capability check (manage_woocommerce) when loading the admin scripts.
1.1.1
Plugin icon shown in the plugin list.
English translations (en_GB/en_US) added for the new admin texts (QR image selection).
1.1.0
TWINT QR image: select directly from the media library via a button (instead of typing a URL), with preview.
1.0.2
Block checkout: payment method icon next to the method name and required-field marker (“*”) on the mobile number.