{"id":325788,"date":"2026-06-17T17:14:50","date_gmt":"2026-06-17T17:14:50","guid":{"rendered":"https:\/\/fr.wordpress.org\/plugins\/tellbill-for-woocommerce\/"},"modified":"2026-06-17T17:14:24","modified_gmt":"2026-06-17T17:14:24","slug":"tellbill-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/tellbill-for-woocommerce\/","author":23516063,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.2","stable_tag":"1.4.2","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Tellbill for WooCommerce","header_author":"Tellbill","header_description":"Cr\u00e9e automatiquement une QR-facture suisse dans Tellbill \u00e0 chaque commande WooCommerce, et marque la commande pay\u00e9e quand la facture est r\u00e9gl\u00e9e (webhook).","assets_banners_color":"7c7c7f","last_updated":"2026-06-17 17:14:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/tellbill.ch","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.2":{"tag":"1.4.2","author":"tellbill","date":"2026-06-17 17:14:24"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3576180,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3576180,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3576180,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3576180,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3576180,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The settings tab: API key, trigger status, payment term, VAT rate and payment sync.","2":"The Tellbill invoice number in the WooCommerce orders list.","3":"Order notes: invoice created, marked as paid, credit note issued on refund."}},"plugin_section":[],"plugin_tags":[15149,12480,187665,9090],"plugin_category":[45],"plugin_contributors":[267602],"plugin_business_model":[],"class_list":["post-325788","plugin","type-plugin","status-publish","hentry","plugin_tags-billing","plugin_tags-invoice","plugin_tags-qr-bill","plugin_tags-switzerland","plugin_category-ecommerce","plugin_contributors-tellbill","plugin_committers-tellbill"],"banners":{"banner":"https:\/\/ps.w.org\/tellbill-for-woocommerce\/assets\/banner-772x250.png?rev=3576180","banner_2x":"https:\/\/ps.w.org\/tellbill-for-woocommerce\/assets\/banner-1544x500.png?rev=3576180","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/tellbill-for-woocommerce\/assets\/icon.svg?rev=3576180","icon":"https:\/\/ps.w.org\/tellbill-for-woocommerce\/assets\/icon.svg?rev=3576180","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/tellbill.ch\">Tellbill<\/a> is a Swiss invoicing service: QR-bill invoices (ISO 20022), automatic payment reminders, bank reconciliation and credit notes. This plugin connects your WooCommerce shop to your Tellbill account.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>When an order reaches the trigger status you choose (default: \"Processing\"), the plugin calls the Tellbill API and creates the matching invoice \u2014 with a Swiss QR code \u2014 then (optionally) emails it to your customer.<\/li>\n<li>The Tellbill invoice number is displayed in the orders list and in the order notes.<\/li>\n<li><strong>Payment sync (optional):<\/strong> when the customer pays the QR-bill, Tellbill notifies WooCommerce through a signed webhook and the order is automatically marked as paid (stock, downloads, etc.).<\/li>\n<li><strong>Refunds:<\/strong> a WooCommerce refund automatically creates the matching credit note in Tellbill (VAT included; full refund = full credit note).<\/li>\n<li><strong>Duplicate-safe:<\/strong> each order is sent with a unique identifier (<code>external_id = \"wc_&lt;order id&gt;\"<\/code>). If the same order is sent twice (double status change, network retry), Tellbill returns the existing invoice instead of creating a duplicate.<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong> a Tellbill account (https:\/\/tellbill.ch) and an API key.<\/p>\n\n<p><strong>Which trigger status should you choose?<\/strong><\/p>\n\n<ul>\n<li><strong>Invoice-based selling<\/strong> (very common in Switzerland: the customer receives the goods, then pays within X days): trigger \"Processing\" or \"Completed\". The invoice carries your payment term; if the customer is late, Tellbill sends reminders automatically.<\/li>\n<li><strong>Prepayment by QR-bill<\/strong> (the customer pays <em>before<\/em> you ship): enable the \"Direct bank transfer\" gateway so the order lands in \"On hold\", and set the trigger to \"On hold\". The customer receives the QR-bill, pays, then you ship.<\/li>\n<li><strong>Paid online<\/strong> (card at checkout): trigger \"Processing\" \u2014 the Tellbill invoice then serves as a receipt and accounting record.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin communicates with the Tellbill API (https:\/\/tellbill.ch) \u2014 the invoicing service it connects to; that is its sole purpose. No data is sent until you configure your API key.<\/p>\n\n<p>Data transmitted to the Tellbill API (https:\/\/tellbill.ch\/api\/v1, or the URL you configure):<\/p>\n\n<ul>\n<li>When an invoice is created (order reaching the trigger status): the customer's billing details (name, email, address), the order lines (item names, quantities, prices) and the order number.<\/li>\n<li>When a refund is issued: the refunded amount and the refund reason.<\/li>\n<li>When you click \"Test connection\": only your API key is transmitted (as a header).<\/li>\n<\/ul>\n\n<p>This data is required to issue the invoices. It is processed by Tellbill according to its terms of service and privacy policy:<\/p>\n\n<ul>\n<li>Terms of service: https:\/\/tellbill.ch\/cgu<\/li>\n<li>Privacy policy: https:\/\/tellbill.ch\/confidentialite<\/li>\n<\/ul>\n\n<h3>Translations<\/h3>\n\n<p>The plugin ships with German (de_DE, de_CH), Italian (it_IT) and English (en_US, en_GB) translations \u2014 the four Swiss business languages are covered out of the box. Source strings are in French (built for the Swiss market). A <code>.pot<\/code> template is bundled in <code>\/languages<\/code> for any additional language.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin through Plugins \u2192 Add New \u2192 Upload Plugin (or copy the folder to <code>wp-content\/plugins\/<\/code>), then activate it.<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 \"Tellbill\" tab.<\/li>\n<li>Paste your Tellbill API key (Tellbill panel \u2192 Settings \u2192 API &amp; integrations).<\/li>\n<li>Pick the trigger status, the payment term and the default VAT rate, then use the \"Test connection\" button.<\/li>\n<\/ol>\n\n<p><strong>Payment sync (optional):<\/strong> in your Tellbill panel \u2192 Webhooks, create an endpoint pointing to the URL shown in the plugin settings (<code>https:\/\/your-site\/wp-json\/tellbill\/v1\/webhook<\/code>), subscribed to the <code>invoice.paid<\/code> event. Then paste the signing secret shown by Tellbill into the plugin settings. Requests are verified with an HMAC-SHA256 signature and a 5-minute anti-replay window; while no secret is configured, the endpoint rejects all requests.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20tellbill%20account%3F\"><h3>Do I need a Tellbill account?<\/h3><\/dt>\n<dd><p>Yes. The plugin is a connector: invoices are created, sent and reconciled by Tellbill. You can create an account on https:\/\/tellbill.ch.<\/p><\/dd>\n<dt id=\"in%20which%20languages%20are%20the%20invoices%20sent%3F\"><h3>In which languages are the invoices sent?<\/h3><\/dt>\n<dd><p>Tellbill issues the invoice PDF and the email in the customer's language (French, German, Italian or English), configurable per customer in your Tellbill panel.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20api%20is%20unreachable%20when%20an%20order%20comes%20in%3F\"><h3>What happens if the API is unreachable when an order comes in?<\/h3><\/dt>\n<dd><p>The plugin adds a note to the order with the error message. You can re-trigger the invoice by setting the order status again \u2014 thanks to the <code>external_id<\/code>, no duplicate will ever be created.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Review fix: the admin JavaScript and CSS are now loaded via the standard <code>wp_enqueue_script<\/code> \/ <code>wp_enqueue_style<\/code> functions (with <code>wp_localize_script<\/code> for the nonce and labels) instead of being printed inline.<\/li>\n<li>Translations are now delivered through WordPress.org language packs (translate.wordpress.org) and loaded automatically; the plugin no longer ships or manually loads bundled translation files.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Security: the payment-sync endpoint now rejects ALL requests until a signing secret is configured (previously, an empty secret meant requests were accepted unverified).<\/li>\n<li>WordPress.org compliance: plugin renamed \"Tellbill for WooCommerce\" (trademark rules), English readme, Requires Plugins \/ License URI headers, admin notice when WooCommerce is inactive, \"External services\" disclosure, translators comments, bundled .pot file.<\/li>\n<li>Bundled translations: German (de_DE, de_CH), Italian (it_IT) and English (en_US, en_GB).<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>WooCommerce refund \u2192 Tellbill credit note, created automatically, VAT included (full refund = full credit note; partial refunds grossed up by the VAT rate when WooCommerce does not handle tax). One credit note per refund (duplicate-safe).<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>\"Test connection\" button in the settings (validates the API key).<\/li>\n<li>Plugin internationalized (i18n): all strings are translatable.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Payment sync: Tellbill webhook (invoice.paid) \u2192 the WooCommerce order is automatically marked as paid. Signed REST endpoint (HMAC), mapped via external_id.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Configurable payment term (payment_term_days).<\/li>\n<li>Default trigger status = \"Processing\"; guidance for the 3 selling models in the settings.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: invoice created on order, duplicate-safe (external_id), orders-list column + order notes, HPOS compatible.<\/li>\n<\/ul>","raw_excerpt":"Automatically creates a Swiss QR-bill invoice in Tellbill for every WooCommerce order, and marks the order paid once the invoice is settled.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/325788","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=325788"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tellbill"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=325788"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=325788"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=325788"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=325788"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=325788"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=325788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}