{"id":379308,"date":"2026-10-04T10:05:18","date_gmt":"2026-10-04T10:05:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/y-kassa-finnish-b2b-checkout-for-woocommerce\/"},"modified":"2026-10-04T10:04:50","modified_gmt":"2026-10-04T10:04:50","slug":"verkkokauppapaja-b2b-checkout","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/verkkokauppapaja-b2b-checkout\/","author":23577970,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.2","stable_tag":"0.3.2","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Verkkokauppapaja B2B Checkout for WooCommerce","header_author":"Tomi Salmi","header_description":"Finnish B2B checkout: \"buying as a company\" toggle, Y-tunnus validation, YTJ autofill and VAT ID for classic and block checkout.","assets_banners_color":"a5a7ad","last_updated":"2026-10-04 10:04:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.2":{"tag":"0.3.2","author":"tomppasalmi","date":"2026-10-04 10:04:50","revision":3727288}},"upgrade_notice":{"0.3.2":"<p>Updated Pro add-on link. No functional changes.<\/p>","0.3.1":"<p>New plugin name (Verkkokauppapaja B2B Checkout for WooCommerce), late escaping in the admin order box, bundled translations removed.<\/p>","0.3.0":"<p>VIES checks, e-invoice fields, PDF invoice details, admin editing, the REST API field and My Account details are now in the separate Pro add-on. Install Pro before updating if you use them.<\/p>","0.2.0":"<p>Admin editing, REST API field, My Account company details and better support for older WooCommerce versions.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3727288,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3727288,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3727288,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3727288,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3727288,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3727288,"resolution":"1","location":"assets","locale":"","width":650,"height":1173},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3727288,"resolution":"2","location":"assets","locale":"","width":605,"height":420},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3727288,"resolution":"3","location":"assets","locale":"","width":480,"height":1420},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3727288,"resolution":"4","location":"assets","locale":"","width":898,"height":490},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3727288,"resolution":"5","location":"assets","locale":"","width":1240,"height":926}},"screenshots":{"1":"Block checkout (Finnish store): the Y-tunnus fills in the company name, address and VAT ID from the Finnish business register (YTJ).","2":"Block checkout: inline error for an invalid Y-tunnus.","3":"Classic checkout (Finnish store) with the company details filled in from YTJ.","4":"Order screen in the admin (Finnish): company details under the billing address.","5":"Settings (Finnish admin)."}},"plugin_section":[],"plugin_tags":[10553,284311,286,284309,284310],"plugin_category":[45],"plugin_contributors":[284312],"plugin_business_model":[],"class_list":["post-379308","plugin","type-plugin","status-publish","hentry","plugin_tags-b2b","plugin_tags-finland","plugin_tags-woocommerce","plugin_tags-y-tunnus","plugin_tags-ytj","plugin_category-ecommerce","plugin_contributors-tomppasalmi","plugin_committers-tomppasalmi"],"banners":{"banner":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/banner-772x250.png?rev=3727288","banner_2x":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/banner-1544x500.png?rev=3727288","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/icon.svg?rev=3727288","icon":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/icon.svg?rev=3727288","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/screenshot-1.png?rev=3727288","caption":"Block checkout (Finnish store): the Y-tunnus fills in the company name, address and VAT ID from the Finnish business register (YTJ)."},{"src":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/screenshot-2.png?rev=3727288","caption":"Block checkout: inline error for an invalid Y-tunnus."},{"src":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/screenshot-3.png?rev=3727288","caption":"Classic checkout (Finnish store) with the company details filled in from YTJ."},{"src":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/screenshot-4.png?rev=3727288","caption":"Order screen in the admin (Finnish): company details under the billing address."},{"src":"https:\/\/ps.w.org\/verkkokauppapaja-b2b-checkout\/assets\/screenshot-5.png?rev=3727288","caption":"Settings (Finnish admin)."}],"raw_content":"<!--section=description-->\n<p>Verkkokauppapaja B2B Checkout makes WooCommerce ready for Finnish business customers. Everything described here is included in this plugin, with no limits, trials or license keys.<\/p>\n\n<ul>\n<li><strong>\"I am buying as a company\" toggle<\/strong> at checkout. The company fields are shown (and required) only for business customers.<\/li>\n<li><strong>Business ID (Y-tunnus)<\/strong> with format and checksum validation, with inline error messages in the block checkout.<\/li>\n<li><strong>YTJ autofill:<\/strong> the company name and address are fetched from the Finnish Patent and Registration Office's free open data API (PRH YTJ API v3). Results are cached.<\/li>\n<li><strong>EU VAT ID<\/strong> derived automatically from the Y-tunnus (FI + 8 digits), with format validation.<\/li>\n<li><strong>Buyer reference \/ PO number<\/strong> (optional field).<\/li>\n<li>Company details are shown in the <strong>admin order view, order emails and the customer's order view<\/strong>, and are available to other plugins through <code>y_kassa_get_order_data()<\/code> and the <code>y_kassa_order_data<\/code> filter.<\/li>\n<li>Works with both the <strong>block checkout<\/strong> (Additional Checkout Fields API) and the <strong>classic checkout<\/strong>. <strong>HPOS compatible.<\/strong><\/li>\n<li><strong>Privacy tools:<\/strong> suggested privacy policy text and personal data export and erasure.<\/li>\n<li>Developer friendly: add your own fields, checks and order data with filters (<code>y_kassa_checkout_fields<\/code>, <code>y_kassa_validation_result<\/code>, <code>y_kassa_meta_keys<\/code>, <code>y_kassa_display_rows<\/code>).<\/li>\n<li>English source strings, ready for translation (Finnish translation via translate.wordpress.org).<\/li>\n<\/ul>\n\n<h4>Verkkokauppapaja B2B Checkout Pro (optional)<\/h4>\n\n<p>A separate, optional add-on is available for shops that need more: EU VIES VAT validation, e-invoice (verkkolasku) address and operator fields, details on PDF invoices, warnings or blocking for bankrupt\/ceased companies, B2B-only mode, company details in My Account, a Business ID column in the orders list, a REST API field and admin editing. This plugin works fully on its own without it. <a href=\"https:\/\/verkkokauppapaja.fi\/b2b-checkout\">More about Pro<\/a><\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin connects to one external service when a customer enters a business ID at checkout:<\/p>\n\n<p><strong>PRH open data YTJ API<\/strong> (Finnish Patent and Registration Office), <code>https:\/\/avoindata.prh.fi\/opendata-ytj-api\/v3\/companies<\/code>. The business ID entered by the customer is sent to look up the company's public register data (name, address, VAT registration, status). <a href=\"https:\/\/avoindata.prh.fi\/en\">Terms \/ licence (CC BY 4.0)<\/a>, <a href=\"https:\/\/www.prh.fi\/en\/presentation_and_duties\/data_protection.html\">PRH privacy<\/a>.<\/p>\n\n<p>No other data (names, emails, addresses of the customer) is sent. Requests are made from your server only when a business ID is entered or an order is placed, and results are cached to minimise calls. Autofill can be turned off in the settings.<\/p>\n\n<h4>Privacy<\/h4>\n\n<ul>\n<li>Company details entered at checkout (Business ID, company name, VAT ID, buyer reference) are stored on the order and, for logged-in customers using the block checkout, on their customer profile (WooCommerce stores additional checkout fields there).<\/li>\n<li>The YTJ lookup result (registered name, company status, time of check) is stored on the order.<\/li>\n<li>The plugin adds a suggested text to <strong>Settings \u2192 Privacy \u2192 Policy guide<\/strong>, and hooks into the WordPress personal data <strong>export and erasure<\/strong> tools: order data is included in WooCommerce's order export\/anonymisation, and customer profile data has its own exporter and eraser.<\/li>\n<li>No cookies, tracking or data sent to the plugin author.<\/li>\n<li>On uninstall, settings and cached lookups can be removed (opt-in); order data is kept because it is part of your accounting records.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin and activate it (WooCommerce 8.9 or newer required).<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Verkkokauppapaja B2B and choose which fields are shown and required.<\/li>\n<li>Optional: add the suggested privacy policy text from Settings \u2192 Privacy \u2192 Policy guide.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20the%20block%20checkout%3F\"><h3>Does it work with the block checkout?<\/h3><\/dt>\n<dd><p>Yes. Fields are registered with the WooCommerce Additional Checkout Fields API. On WooCommerce 9.9 and newer, WooCommerce itself shows and requires the company fields only when \"I am buying as a company\" is checked. On WooCommerce 8.9\u20139.8 the plugin hides the fields itself and enforces the required fields when the order is placed.<\/p><\/dd>\n<dt id=\"which%20versions%20are%20supported%3F\"><h3>Which versions are supported?<\/h3><\/dt>\n<dd><p>Tested with WooCommerce 8.9 and 11.1 on WordPress 6.5\u20137.1 and PHP 7.4\u20138.4, with both HPOS and legacy order storage.<\/p><\/dd>\n<dt id=\"how%20do%20i%20read%20the%20data%20in%20my%20own%20code%20or%20integration%3F\"><h3>How do I read the data in my own code or integration?<\/h3><\/dt>\n<dd><p>Use <code>y_kassa_get_order_data( $order )<\/code> in PHP. It returns the Business ID, company name, VAT ID, buyer reference and YTJ result for business orders (an empty array for consumer orders).<\/p><\/dd>\n<dt id=\"is%20the%20vat%20id%20checked%20against%20vies%3F\"><h3>Is the VAT ID checked against VIES?<\/h3><\/dt>\n<dd><p>This plugin checks the format and derives the Finnish VAT ID from the Y-tunnus. Live validation against the EU VIES register is part of the optional Verkkokauppapaja B2B Checkout Pro add-on.<\/p><\/dd>\n<dt id=\"is%20the%20lookup%20endpoint%20safe%20to%20expose%3F\"><h3>Is the lookup endpoint safe to expose?<\/h3><\/dt>\n<dd><p>The autofill uses a read-only REST route that only returns public register data. It requires a nonce, is rate-limited per IP (60 lookups per 10 minutes, filter <code>y_kassa_rate_limit<\/code>) and only ever calls the fixed PRH address.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Changed: the optional Pro add-on link on the settings page now points to https:\/\/verkkokauppapaja.fi\/b2b-checkout.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Changed: the plugin is renamed to Verkkokauppapaja B2B Checkout for WooCommerce (slug and text domain <code>verkkokauppapaja-b2b-checkout<\/code>). Settings, order data and filters are unchanged.<\/li>\n<li>Security: extra output in the admin order company details box is escaped late.<\/li>\n<li>Removed: bundled translation files; translations are now loaded from translate.wordpress.org language packs.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Changed: VIES validation, e-invoice fields, PDF invoice output, company status warnings, B2B-only mode, My Account company details, the orders list column, the REST API field and admin editing moved to the optional Pro add-on. Existing order data stays on the orders (Business ID, VAT ID and buyer reference are still shown); with Pro installed, existing settings and e-invoice\/VIES data carry over unchanged.<\/li>\n<li>Fixed: block checkout text fields no longer show a placeholder on top of the floating label.<\/li>\n<li>New: filters for extensions (<code>y_kassa_checkout_fields<\/code>, <code>y_kassa_meta_keys<\/code>, <code>y_kassa_display_rows<\/code>, <code>y_kassa_has_toggle<\/code>, <code>y_kassa_script_data<\/code>, <code>y_kassa_company_response<\/code>).<\/li>\n<li>New: a small, dismissible link to the Pro add-on on the settings page.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: edit B2B details on the admin order screen, with re-validation and VIES re-check.<\/li>\n<li>New: Business ID column (with VIES status) in the orders list, HPOS and legacy.<\/li>\n<li>New: <code>y_kassa<\/code> object in the WooCommerce REST API orders endpoint (read\/write).<\/li>\n<li>New: company details in My Account, shared with classic and block checkout pre-fill.<\/li>\n<li>New: field-level error messages in the block checkout.<\/li>\n<li>New: dedicated company name field in the block checkout, required only for business customers.<\/li>\n<li>New: privacy policy text, personal data exporter and eraser.<\/li>\n<li>Improved: WooCommerce 8.9\u20139.8 support in the block checkout (fields hidden until the company toggle is checked).<\/li>\n<li>Fixed: My Account company details not saving on WooCommerce 8.9\u20139.4.<\/li>\n<li>Fixed: partial checkout updates on newer WooCommerce no longer trigger full order validation.<\/li>\n<li>Security: remote calls use <code>wp_safe_remote_get<\/code> without redirects and with a response size limit; input length limits on the lookup routes.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First MVP.<\/li>\n<\/ul>","raw_excerpt":"Finnish B2B checkout for WooCommerce: &quot;buying as a company&quot; toggle, Y-tunnus validation, YTJ autofill and VAT ID for classic and block checkout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379308","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=379308"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tomppasalmi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379308"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379308"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379308"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379308"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379308"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}