{"id":362459,"date":"2026-09-07T20:24:17","date_gmt":"2026-09-07T20:24:17","guid":{"rendered":"https:\/\/br.wordpress.org\/plugins\/checkout-brasil\/"},"modified":"2026-09-07T21:01:01","modified_gmt":"2026-09-07T21:01:01","slug":"ballitech-checkout-fields-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ballitech-checkout-fields-for-woocommerce\/","author":23558894,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Ballitech Checkout Fields for WooCommerce","header_author":"Raphael Balliana","header_description":"Brazilian fields for the WooCommerce checkout: CPF, CNPJ (including the alphanumeric format), state registration, street number, district and mobile phone. Works in both the block and the classic checkout. Migrates from Brazilian Market on WooCommerce without losing data.","assets_banners_color":"192f36","last_updated":"2026-09-07 21:01:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/ballitech\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"ballitech","date":"2026-09-07 21:01:01","revision":3685593}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3685545,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3685545,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3685545,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3685545,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3685545,"resolution":"1","location":"assets","locale":"","width":1280,"height":1340},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3685545,"resolution":"2","location":"assets","locale":"","width":1280,"height":1402},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3685545,"resolution":"3","location":"assets","locale":"","width":1280,"height":2243},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3685545,"resolution":"4","location":"assets","locale":"","width":1280,"height":1000}},"screenshots":{"1":"The fields in the block checkout.","2":"Switching between individual and company.","3":"The Brazilian data on the order screen in the admin.","4":"The diagnostics page, with the validator battery."}},"plugin_section":[],"plugin_tags":[8286,157502,3148,152487,66145],"plugin_category":[45],"plugin_contributors":[279615],"plugin_business_model":[],"class_list":["post-362459","plugin","type-plugin","status-publish","hentry","plugin_tags-brasil","plugin_tags-cep","plugin_tags-checkout","plugin_tags-cnpj","plugin_tags-cpf","plugin_category-ecommerce","plugin_contributors-ballitech","plugin_committers-ballitech"],"banners":{"banner":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/banner-772x250.png?rev=3685545","banner_2x":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/banner-1544x500.png?rev=3685545","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/icon-128x128.png?rev=3685545","icon_2x":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/icon-256x256.png?rev=3685545","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/screenshot-1.png?rev=3685545","caption":"The fields in the block checkout."},{"src":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/screenshot-2.png?rev=3685545","caption":"Switching between individual and company."},{"src":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/screenshot-3.png?rev=3685545","caption":"The Brazilian data on the order screen in the admin."},{"src":"https:\/\/ps.w.org\/ballitech-checkout-fields-for-woocommerce\/assets\/screenshot-4.png?rev=3685545","caption":"The diagnostics page, with the validator battery."}],"raw_content":"<!--section=description-->\n<p>This plugin adds the fields a Brazilian store needs at checkout and that\nWooCommerce does not ship with: person type, CPF, CNPJ, state registration\n(inscricao estadual), street number and district.<\/p>\n\n<p>Three things set it apart from the plugins that came before it.<\/p>\n\n<p><strong>1. It works in the block checkout.<\/strong><\/p>\n\n<p>WooCommerce replaced its checkout with one built on blocks. Plugins written for\nthe old checkout simply draw nothing there: the customer reaches the payment\nstep and there is no CPF field at all. This plugin uses the official additional\ncheckout fields API, the same one WooCommerce itself uses, so the fields show up\nin both checkouts without workarounds.<\/p>\n\n<p><strong>2. It accepts the alphanumeric CNPJ.<\/strong><\/p>\n\n<p>Since 31 July 2026 the Brazilian federal tax authority issues CNPJ numbers that\ncontain letters (Normative Instruction RFB 2.229\/2024). The identifier still has\n14 positions, but the first 12 may include letters; only the 2 final check\ndigits remain numeric. A validator that accepts digits only will reject a\nlegitimate company at checkout, and the sale is lost without anyone finding out\nwhy.<\/p>\n\n<p>The validation rule here was checked during development against 200,000 random\nnumeric CNPJ numbers plus six real, publicly known ones: the new algorithm\naccepts everything the old one accepted, with no divergence. The plugin also\nships a diagnostics page that runs a short validator battery inside your own\nstore, so you can see the rule working on your installation.<\/p>\n\n<p><strong>3. You can move off the old plugin without losing data.<\/strong><\/p>\n\n<p>Stores already running <em>Brazilian Market on WooCommerce<\/em> have the CPF stored in\n    _billing_cpf, and the whole ecosystem reads it from there: invoicing software,\npayment gateways, themes, export spreadsheets. This plugin <strong>writes to the same\nkeys<\/strong>, in addition to the new ones. Nothing that used to work stops working\nwhen you switch.<\/p>\n\n<p>Existing customer records are imported automatically, in batches, without\nlocking up the admin.<\/p>\n\n<h4>Address autofill from the CEP<\/h4>\n\n<p>Type the Brazilian postal code and the street, district and city fill\nthemselves, in the block checkout and in the classic one alike. The lookup uses\nViaCEP, needs no key and no account.<\/p>\n\n<p>It only writes into fields that are still empty, so it never erases something\nthe customer typed. If the CEP is unknown, or ViaCEP is unreachable, nothing\nhappens and the person fills the address by hand: the checkout is never blocked\nby a lookup. Stores that prefer to turn it off can return false from the\n    ballitech_cf_buscar_cep filter.<\/p>\n\n<h4>Included fields<\/h4>\n\n<ul>\n<li>Person type (individual or company), which shows either CPF or CNPJ<\/li>\n<li>CPF, with check digit validation<\/li>\n<li>CNPJ, numeric and alphanumeric, with validation<\/li>\n<li>State registration (inscricao estadual)<\/li>\n<li>Street number and district, on both billing <strong>and<\/strong> shipping, so the shipping\nlabel comes out right<\/li>\n<li>Input masks for CPF, CNPJ, postal code and phone<\/li>\n<li>Address lookup from the Brazilian postal code (CEP)<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>Block checkout and classic checkout<\/li>\n<li>HPOS (High-Performance Order Storage), declared and tested<\/li>\n<li>WooCommerce 8.9 or newer<\/li>\n<\/ul>\n\n<h3>Is there a paid version?<\/h3>\n\n<p>Yes, and this plugin is complete without it. Everything described above is free\nand stays free: the fields, the validation, the alphanumeric CNPJ, the migration\nand the postal code lookup.<\/p>\n\n<p><strong>Ballitech Checkout Fields Pro<\/strong> adds one thing only: it looks the CNPJ up at the federal\ntax authority and fills in company name, address, district and postal code by\nitself, warning you when the company is no longer active. It is a separate\nplugin, distributed outside this directory, and nothing here depends on it.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin uses <strong>ViaCEP<\/strong> (https:\/\/viacep.com.br) to fill in street, district\nand city from the postal code typed by the customer.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> the postal code typed by the customer, and nothing else.<\/li>\n<li><strong>When:<\/strong> at the moment the customer finishes typing the 8 digits, from their\nown browser. The store server does not take part in the request.<\/li>\n<li><strong>Terms of use and privacy policy:<\/strong> https:\/\/viacep.com.br<\/li>\n<\/ul>\n\n<p>To turn the lookup off, use this filter:<\/p>\n\n<pre><code>add_filter( 'ballitech_cf_buscar_cep', '__return_false' );\n<\/code><\/pre>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>That is all. There is no settings screen; the fields appear at checkout.<\/li>\n<li>If you were using <em>Brazilian Market on WooCommerce<\/em>, <strong>deactivate it<\/strong>. Your\ndata has already been imported.<\/li>\n<li>Open <strong>WooCommerce &gt; Ballitech Checkout<\/strong> to confirm everything is green.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"the%20fields%20show%20up%20twice.%20what%20happened%3F\"><h3>The fields show up twice. What happened?<\/h3><\/dt>\n<dd><p>Either the old plugin is still active, or your WooCommerce already draws the\nfields on its own and compatibility mode is switched on for nothing. Open\n<strong>WooCommerce &gt; Ballitech Checkout<\/strong>: the page tells you which of the two it is, in\none line.<\/p><\/dd>\n<dt id=\"will%20my%20invoicing%20software%20keep%20working%3F\"><h3>Will my invoicing software keep working?<\/h3><\/dt>\n<dd><p>Yes. The plugin writes to the same keys <em>Brazilian Market on WooCommerce<\/em> used\n(<code>_billing_cpf<\/code>, <code>_billing_cnpj<\/code>, <code>_billing_number<\/code>, <code>_billing_neighborhood<\/code>),\nwhich is where invoicing tools read from.<\/p><\/dd>\n<dt id=\"what%20is%20an%20alphanumeric%20cnpj%3F\"><h3>What is an alphanumeric CNPJ?<\/h3><\/dt>\n<dd><p>A CNPJ with letters in the first 12 positions, issued by the Brazilian federal\ntax authority since 31 July 2026. Older CNPJ numbers, made of digits only, stay\nvalid forever: there is no migration and no renumbering.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20configure%20anything%3F\"><h3>Do I need to configure anything?<\/h3><\/dt>\n<dd><p>No. If you need to change the behaviour, the code documents the available\nfilters.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20classic%20%28shortcode%29%20checkout%3F\"><h3>Does it work with the classic (shortcode) checkout?<\/h3><\/dt>\n<dd><p>Yes. The plugin detects which of the two the store uses and adapts.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Fields: person type, CPF, CNPJ, state registration, street number, district.<\/li>\n<li>CPF validation and CNPJ validation, numeric and alphanumeric (IN RFB\n2.229\/2024).<\/li>\n<li>Block checkout support through the official additional fields API.<\/li>\n<li>HPOS compatibility declared.<\/li>\n<li>Import and mirroring of the Brazilian Market on WooCommerce meta keys.<\/li>\n<li>Diagnostics page with a validator battery.<\/li>\n<\/ul>","raw_excerpt":"Brazilian checkout fields for WooCommerce: CPF, CNPJ (alphanumeric included), state registration, and address autofill from the CEP.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/362459","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=362459"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ballitech"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=362459"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=362459"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=362459"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=362459"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=362459"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=362459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}