{"id":347354,"date":"2026-07-31T14:36:48","date_gmt":"2026-07-31T14:36:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/checkout-brasil-for-woocommerce\/"},"modified":"2026-07-31T14:36:12","modified_gmt":"2026-07-31T14:36:12","slug":"buildsbyluke-checkout-brasil-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/buildsbyluke-checkout-brasil-for-woocommerce\/","author":23531792,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"BuildsByLuke Checkout Brasil for WooCommerce","header_author":"Luke W","header_description":"Brazilian checkout fields for the classic and block checkout: CPF\/CNPJ validation (alphanumeric-CNPJ ready), street number, neighborhood.","assets_banners_color":"45403f","last_updated":"2026-07-31 14:36:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/buildsbyluke.com\/plugins\/checkout-brasil-for-woocommerce","header_author_uri":"https:\/\/buildsbyluke.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"lukeaxiomflow","date":"2026-07-31 14:36:12"}},"upgrade_notice":{"1.0.1":"<p>Plugin renamed; all strings now in English with a bundled pt_BR translation. No functional changes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3630122,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3630122,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3630122,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3630122,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3630122,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3630122,"resolution":"1","location":"assets","locale":"","width":1265,"height":2080},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3630122,"resolution":"2","location":"assets","locale":"","width":1265,"height":1306},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3630122,"resolution":"3","location":"assets","locale":"","width":1265,"height":1005}},"screenshots":{"1":"Classic checkout with the individual\/company selector, CPF\/CNPJ, street number and neighborhood.","2":"Settings screen.","3":"CPF\/CNPJ on the admin order screen."}},"plugin_section":[],"plugin_tags":[8287,3148,152487,66145,286],"plugin_category":[45],"plugin_contributors":[271970],"plugin_business_model":[],"class_list":["post-347354","plugin","type-plugin","status-publish","hentry","plugin_tags-brazil","plugin_tags-checkout","plugin_tags-cnpj","plugin_tags-cpf","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-lukeaxiomflow","plugin_committers-lukeaxiomflow"],"banners":{"banner":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/banner-772x250.png?rev=3630122","banner_2x":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/banner-1544x500.png?rev=3630122","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/icon.svg?rev=3630122","icon":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/icon.svg?rev=3630122","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/screenshot-1.png?rev=3630122","caption":"Classic checkout with the individual\/company selector, CPF\/CNPJ, street number and neighborhood."},{"src":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/screenshot-2.png?rev=3630122","caption":"Settings screen."},{"src":"https:\/\/ps.w.org\/buildsbyluke-checkout-brasil-for-woocommerce\/assets\/screenshot-3.png?rev=3630122","caption":"CPF\/CNPJ on the admin order screen."}],"raw_content":"<!--section=description-->\n<p><strong>Brazilian checkout fields for WooCommerce \u2014 on BOTH the classic and the block checkout, with CPF\/CNPJ validation ready for the alphanumeric CNPJ format Brazil issues from July 31, 2026.<\/strong><\/p>\n\n<p>From July 31, 2026, Brazil's Receita Federal issues CNPJs with letters in the first 12 positions. Any digits-only validator silently rejects those new companies at checkout. This plugin validates BOTH the classic numeric format and the new alphanumeric format, check digits included.<\/p>\n\n<h4>What the free version does (complete \u2014 no locked features)<\/h4>\n\n<ul>\n<li><strong>CPF and CNPJ fields with real check-digit validation<\/strong> \u2014 including the alphanumeric CNPJ (check digits computed over ASCII\u221248 character values, per the official SERPRO specification) \u2014 with clear error messages at checkout.<\/li>\n<li><strong>Individual\/company selector<\/strong> (Pessoa F\u00edsica \/ Pessoa Jur\u00eddica) on the classic checkout \u2014 or run in individuals-only, companies-only, or no-document mode. Optional RG and State Registration (Inscri\u00e7\u00e3o Estadual) fields, and a company legal-name (Raz\u00e3o Social) field added when your WooCommerce install lacks one.<\/li>\n<li><strong>Street number and neighborhood address fields<\/strong> (billing and shipping) plus an optional cell phone field \u2014 and Brazilian address formatting (\"street, number \/ neighborhood\") everywhere WooCommerce prints an address.<\/li>\n<li><strong>Native block checkout (Gutenberg) support<\/strong> \u2014 a combined \"CPF or CNPJ\" contact field plus street number\/neighborhood fields via WooCommerce's official Additional Checkout Fields API (WooCommerce 8.9+), validated server-side.<\/li>\n<li><strong>Input masks<\/strong> on the classic checkout (CPF, alphanumeric-aware CNPJ, CEP, phone) \u2014 lightweight vanilla JavaScript, no dependencies.<\/li>\n<li><strong>Compatible with Brazilian Market on WooCommerce data<\/strong>: fields are stored under the exact same meta keys (<code>_billing_cpf<\/code>, <code>_billing_cnpj<\/code>, <code>_billing_persontype<\/code>, <code>_billing_number<\/code>, <code>_billing_neighborhood<\/code>, \u2026). Migrating from that plugin, existing customer and order data keeps working \u2014 and so do integrations that read those keys (NF-e issuers, payment gateways), <strong>including for orders placed on the block checkout<\/strong> (values are mirrored into the legacy keys).<\/li>\n<li>CPF\/CNPJ shown on the admin order screen and in order emails; Site Health checks; WP-CLI (<code>wp cbfw validate 12.ABC.345\/01DE-35<\/code>).<\/li>\n<li><strong>English source strings with a complete Brazilian Portuguese (pt_BR) translation bundled<\/strong> \u2014 stores running in Portuguese see every field, message and setting in Portuguese.<\/li>\n<\/ul>\n\n<h4>Honest scope<\/h4>\n\n<p>This plugin adds and validates checkout fields. It is not fiscal or tax software, it does not issue NF-e invoices, and it cannot by itself make a store compliant with any regulation \u2014 invoicing and tax obligations remain with your ERP\/issuer, which will keep finding the data under the usual meta keys.<\/p>\n\n<p><strong><a href=\"https:\/\/buildsbyluke.com\/plugins\/checkout-brasil-for-woocommerce\">Pro<\/a><\/strong> (in-dashboard upgrade, 14-day trial, no card required): address autofill from the CEP (your own server queries ViaCEP, with caching), an alphanumeric-CNPJ transition report (scans your orders and flags documents with invalid check digits that will break ERP\/NF-e integrations), fiscal CSV export (CPF\/CNPJ\/IE by period) for your accountant, and custom labels for this plugin's fields. Pro is a separate, paid build; its code is not part of this plugin. It is sold and licensed through Freemius (see \"External services\").<\/p>\n\n<h3>External services<\/h3>\n\n<p>The free plugin's own features run entirely on your server \u2014 field rendering, validation, masks and data mirroring make <strong>no external requests at all<\/strong>.<\/p>\n\n<p><strong>Freemius (freemius.com), who sell and license the Pro version<\/strong>\nFreemius is contacted in four situations. Every one of them is something you click. It is never contacted in the background.<\/p>\n\n<ol>\n<li><strong>If you opt in on the activation screen<\/strong> (or start a trial \/ activate a licence). Sent to api.freemius.com: your site URL, your WordPress and PHP versions, and the email address of the account you activate with. Skipping the opt-in is a first-class choice and the plugin is fully functional without it.<\/li>\n<li><strong>If you open the \"Upgrade\" page<\/strong> under the plugin's menu. Your own server (not your browser) asks api.freemius.com for current plan prices, sending your site URL. The page itself loads no third-party scripts \u2014 everything it renders is served from this plugin's own folder. The payment SDK's bundled pricing script used to inject Google Analytics and a remote checkout script into wp-admin on that page; this build removes both, along with the SDK's remaining remote references (all modifications are listed under \"Source code\" below).<\/li>\n<li><strong>If you open the \"Contact Us\" page<\/strong>, which is Freemius's hosted support form (wp.freemius.com). The link carries your site URL and your WordPress login URL so the form knows which site you are writing about.<\/li>\n<li><strong>If you click a plan to buy<\/strong>, you go to Freemius's hosted checkout (checkout.freemius.com). It receives your site URL, site name, WordPress and PHP versions, and your WordPress administrator email address (pre-filled, sent whether or not you complete the purchase). Freemius is the merchant of record. Their checkout page loads its own third-party scripts (at the time of writing: Stripe, PayPal, Google Tag Manager, and Freemius's own assets); we do not control that list. If you never click a plan, none of it loads.<\/li>\n<\/ol>\n\n<p>Terms: https:\/\/freemius.com\/terms\/ \u2014 Privacy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<p>Installing, activating, skipping the opt-in, using every screen, deactivating (the SDK's deactivation-feedback dialog is switched off in this build, so deactivation is one click and sends nothing), WordPress's update cycle and all scheduled tasks complete without contacting Freemius at all. Free updates come from WordPress.org like any other plugin.<\/p>\n\n<p><strong>ViaCEP (viacep.com.br) \u2014 Pro only, and only if you enable it<\/strong>\nThe Pro version's CEP address autofill queries ViaCEP <strong>from your own server<\/strong> (never from the shopper's browser), sending only the postcode the customer typed, with a 12-hour cache and a per-IP rate limit. The free plugin contains no ViaCEP code. Service: https:\/\/viacep.com.br\/<\/p>\n\n<h3>Source code<\/h3>\n\n<p>This plugin's own PHP and JavaScript are unminified and readable in the plugin folder.<\/p>\n\n<p>The one exception is the third-party payment SDK in <code>vendor\/freemius\/<\/code>, which ships pre-minified. Those files are the Freemius WordPress SDK, published under the GPL, and their unminified source and build tooling are public:<\/p>\n\n<ul>\n<li>Freemius WordPress SDK: https:\/\/github.com\/Freemius\/wordpress-sdk<\/li>\n<li>The pricing screen bundled at <code>vendor\/freemius\/assets\/js\/pricing\/freemius-pricing.js<\/code>: https:\/\/github.com\/Freemius\/pricing-page<\/li>\n<\/ul>\n\n<p>The minified files under <code>vendor\/freemius\/<\/code> are: <code>assets\/js\/pricing\/freemius-pricing.js<\/code>, <code>assets\/js\/postmessage.js<\/code>, <code>assets\/js\/nojquery.ba-postmessage.js<\/code>, <code>assets\/js\/jquery.form.js<\/code>, and thirteen stylesheets under <code>assets\/css\/<\/code>.<\/p>\n\n<p>This plugin ships four deliberate modifications to that SDK, all in <code>assets\/js\/pricing\/freemius-pricing.js<\/code>, all removing remote references from wp-admin:<\/p>\n\n<ol>\n<li>The <code>appendScripts()<\/code> method is emptied. Upstream it injects <code>https:\/\/www.google-analytics.com\/analytics.js<\/code> and <code>https:\/\/checkout.freemius.com\/checkout.js<\/code> into wp-admin when the pricing screen renders.<\/li>\n<li>The Google Analytics pageview tracker is stubbed out. Upstream it reports pricing-page views to Freemius's Analytics property whenever a GA object is already present in wp-admin, stamping them with the Freemius user id.<\/li>\n<li>The remote loading spinner (<code>img.freemius.com\/blue-loader.gif<\/code>) is replaced with an inline data-URI equivalent.<\/li>\n<li>Testimonial photos (Gravatar\/remote) are forced to the bundled placeholder image, so the pricing page renders without any remote image requests.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate (WooCommerce is required \u2014 declared via the Requires Plugins header).<\/li>\n<li>A <strong>Checkout Brasil<\/strong> menu appears in the dashboard. Choose the person-type mode (individuals and companies, individuals only, companies only, or no document fields) and which fields to use.<\/li>\n<li>Done \u2014 the fields appear on both the classic and the block checkout.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20changes%20with%20the%20alphanumeric%20cnpj%3F\"><h3>What changes with the alphanumeric CNPJ?<\/h3><\/dt>\n<dd><p>From July 31, 2026, Brazil's Receita Federal issues CNPJs with letters in the first 12 positions (the two check digits remain numeric, computed over ASCII\u221248 character values). Digits-only validators reject those documents. This plugin validates both formats, check digits included.<\/p><\/dd>\n<dt id=\"i%20am%20migrating%20from%20brazilian%20market%20on%20woocommerce.%20do%20i%20lose%20data%3F\"><h3>I am migrating from Brazilian Market on WooCommerce. Do I lose data?<\/h3><\/dt>\n<dd><p>No. Field names and meta keys are identical \u2014 deactivate the old plugin, activate this one, and existing customer\/order data stays where it always was. Integrations reading <code>_billing_cpf<\/code>\/<code>_billing_cnpj<\/code> keep working.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20%28gutenberg%29%20checkout%3F\"><h3>Does it work with the block (Gutenberg) checkout?<\/h3><\/dt>\n<dd><p>Yes \u2014 natively, through WooCommerce's official Additional Checkout Fields API (WooCommerce 8.9+). On the block checkout the document is a single \"CPF or CNPJ\" field (the API does not yet support showing\/hiding a field based on another field's value), while the classic checkout gets the full individual\/company selector.<\/p><\/dd>\n<dt id=\"is%20the%20checkout%20shown%20in%20portuguese%3F\"><h3>Is the checkout shown in Portuguese?<\/h3><\/dt>\n<dd><p>Yes. A complete Brazilian Portuguese (pt_BR) translation is bundled. Stores whose site language is Portuguese (Brazil) see every checkout field, validation message and setting in Portuguese. The source strings are English, so the plugin can be translated into any language.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20issue%20nf-e%20invoices%20or%20guarantee%20fiscal%20compliance%3F\"><h3>Does the plugin issue NF-e invoices or guarantee fiscal compliance?<\/h3><\/dt>\n<dd><p>No. It adds and validates checkout fields. Invoice issuance and tax obligations are your ERP\/issuer's job \u2014 those tools will keep finding the data under the usual meta keys. No plugin can, by itself, make a store compliant with any regulation.<\/p><\/dd>\n<dt id=\"can%20i%20use%20only%20the%20street%20number%2Fneighborhood%20fields%2C%20without%20cpf%2Fcnpj%3F\"><h3>Can I use only the street number\/neighborhood fields, without CPF\/CNPJ?<\/h3><\/dt>\n<dd><p>Yes \u2014 the \"no document fields\" mode keeps only the address fields you enable.<\/p><\/dd>\n<dt id=\"does%20the%20free%20version%20phone%20home%3F\"><h3>Does the free version phone home?<\/h3><\/dt>\n<dd><p>No. The plugin's own features make no external requests. The Freemius SDK (which powers the optional paid upgrade) only talks to Freemius in the four click-through situations listed under \"External services\" \u2014 never in the background.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed to \"BuildsByLuke Checkout Brasil for WooCommerce\".<\/li>\n<li>All source strings and the readme are now in English; a complete Brazilian Portuguese (pt_BR) translation is bundled.<\/li>\n<li>No functional changes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: Brazilian fields on the classic and block checkout; CPF and CNPJ validation (including the July 2026 alphanumeric CNPJ); input masks; data compatibility with Brazilian Market on WooCommerce; Site Health checks; WP-CLI command. Pro: ViaCEP address autofill, alphanumeric-CNPJ transition report, fiscal CSV export, custom field labels.<\/li>\n<\/ul>","raw_excerpt":"Brazilian checkout fields for WooCommerce: CPF\/CNPJ validation ready for the alphanumeric CNPJ, street number and neighborhood, on both checkouts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/347354","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=347354"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lukeaxiomflow"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=347354"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=347354"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=347354"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=347354"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=347354"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=347354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}