[{"data":1,"prerenderedAt":774},["ShallowReactive",2],{"story:navigation\u002Fsearch:help":3,"story:help\u002Fcategories":48,"header:help":77,"footer:default":132,"story:help\u002Farticles\u002Fvalidate-vat-ids-at-checkout":314,"no-guide:validate-vat-ids-at-checkout":36,"article:\u002Fhelp\u002Farticles\u002Fvalidate-vat-ids-at-checkout":515,"story:contact":531,"help:tree:7c751493-a133-4b62-8ec2-4e4339dd9d64":719,"_apollo:default":773},{"name":4,"created_at":5,"published_at":6,"updated_at":7,"id":8,"uuid":9,"content":10,"slug":34,"full_slug":39,"sort_by_date":36,"position":40,"tag_list":41,"is_startpage":42,"parent_id":43,"meta_data":36,"group_id":44,"first_published_at":45,"release_id":36,"lang":46,"path":36,"alternates":47,"default_full_slug":36,"translated_slugs":36},"Search","2024-10-21T22:08:54.973Z","2025-05-26T09:17:25.790Z","2025-05-26T09:17:25.804Z",13592003,"14cbc359-9ac1-4a7a-a8de-ad4ac8ef26d4",{"_uid":11,"name":4,"indices":12,"summary":16,"component":34,"primary_image":35},"5e4a56e8-76f1-4790-b3a7-70f1be97d042",[13,19,24,29],{"key":14,"_uid":15,"icon":16,"name":17,"component":18},"all","c12a3210-7323-4273-8217-5215e52efe84","","All","index",{"key":20,"_uid":21,"icon":22,"name":23,"component":18},"help_center_article","5acff080-95e4-44d3-8dcf-1b19720af382","fa-file-alt","Articles",{"key":25,"_uid":26,"icon":27,"name":28,"component":18},"help_center_guide","b8fbc206-c083-471e-a1f0-0ebeb90a669d","fa-book","Guides",{"key":30,"_uid":31,"icon":32,"name":33,"component":18},"blog_post","23419e83-2e56-4c4c-8a05-9fd1b3c9a9bd","fa-file-image","Blog Posts","search",{"id":36,"alt":36,"name":16,"focus":36,"title":36,"source":36,"filename":16,"copyright":36,"fieldtype":37,"meta_data":38},null,"asset",{},"navigation\u002Fsearch",60,[],false,10082747,"11e1fd31-95cd-4fc9-b736-8b8910663e6c","2024-10-21T23:17:05.904Z","default",[],{"name":23,"created_at":49,"published_at":50,"updated_at":51,"id":52,"uuid":53,"content":54,"slug":68,"full_slug":69,"sort_by_date":36,"position":70,"tag_list":71,"is_startpage":72,"parent_id":73,"meta_data":36,"group_id":74,"first_published_at":75,"release_id":36,"lang":46,"path":36,"alternates":76,"default_full_slug":36,"translated_slugs":36},"2022-09-19T14:42:29.685Z","2024-07-30T18:17:22.506Z","2024-07-30T18:17:22.525Z",2660,"4c0a2d99-ec30-4579-8ef1-6bf5564d4839",{"_uid":55,"icon":16,"name":23,"guides":56,"pinned":42,"summary":57,"category":16,"component":58,"blog_posts":59,"content_hub":42,"icon_custom":60,"case_studies":61,"faq_sections":62,"help_articles":63,"featured_guides":64,"mailbox_category":16,"featured_articles":65,"featured_blog_posts":66,"featured_case_studies":67},"d6dae89a-907a-4bf7-82de-fe2ba875ee6e",[],"Get your questions answered with our browsable knowledge base.","help_center_category",[],{"id":36,"alt":36,"name":16,"focus":36,"title":36,"filename":16,"copyright":36,"fieldtype":37},[],[],[],[],[],[],[],"categories","help\u002Fcategories\u002F",530,[],true,2658,"19ebcdd2-027f-47f5-9a5b-a8992c959578","2022-09-19T16:24:39.219Z",[],{"name":78,"created_at":79,"published_at":80,"updated_at":81,"id":82,"uuid":83,"content":84,"slug":125,"full_slug":126,"sort_by_date":36,"position":127,"tag_list":128,"is_startpage":42,"parent_id":43,"meta_data":36,"group_id":129,"first_published_at":130,"release_id":36,"lang":46,"path":36,"alternates":131,"default_full_slug":36,"translated_slugs":36},"Help Center Header","2024-08-09T18:06:34.939Z","2024-10-21T21:58:39.217Z","2024-10-21T21:58:39.232Z",10082752,"3e9b88f7-c163-4657-a2f2-62532d600fad",{"_uid":85,"link":86,"badge":89,"items":90,"title":16,"buttons":118,"new_tab":42,"submenu":119,"alignment":16,"component":120,"badge_link":121,"top_menu_items":124},"e5645a1a-f991-40e8-8d67-e40ebc082b5a",{"id":16,"url":16,"linktype":87,"fieldtype":88,"cached_url":16},"story","multilink","Help Center",[91,96,102,107,112],{"_uid":92,"link":93,"title":23,"new_tab":42,"submenu":94,"component":95},"5cbe2861-1f49-4166-97da-a4dddd8105e3",{"id":53,"url":16,"linktype":87,"fieldtype":88,"cached_url":69},[],"header___item",{"_uid":97,"link":98,"title":101,"new_tab":72,"component":95},"1c8edeb5-b9e9-4cb8-b1c6-c1f292f7d7cd",{"id":16,"url":99,"linktype":100,"fieldtype":88,"cached_url":99},"https:\u002F\u002Fwiki.foxycart.com\u002F","url","Documentation",{"_uid":103,"link":104,"title":106,"new_tab":72,"component":95},"8d7df70e-f087-4da0-b616-6f0e9a5af35c",{"id":16,"url":105,"linktype":100,"fieldtype":88,"cached_url":105},"https:\u002F\u002Fapi.foxycart.com\u002F","API Documentation",{"_uid":108,"link":109,"title":111,"new_tab":72,"component":95},"f76e7944-23d5-4652-87e4-cdae79272762",{"id":16,"url":110,"linktype":100,"fieldtype":88,"cached_url":110},"https:\u002F\u002Fstatus.foxy.io\u002F","System Status",{"_uid":113,"link":114,"title":117,"new_tab":42,"component":95},"0de16771-4c84-466c-a1da-d8568113c71f",{"id":115,"url":16,"linktype":87,"fieldtype":88,"cached_url":116},"01e4e370-f9b9-45af-8fa9-f15540699b0d","contact","Contact Us",[],[],"header",{"id":122,"url":16,"linktype":87,"fieldtype":88,"cached_url":123},"4a679eb7-662d-4ea4-a976-5a2acbf0b663","help\u002F",[],"help-header","navigation\u002Fhelp-header",20,[],"71b81c2e-5e09-48a1-a397-a3c72fcd344a","2022-09-21T14:50:25.655Z",[],{"name":133,"created_at":134,"published_at":135,"updated_at":136,"id":137,"uuid":138,"content":139,"slug":307,"full_slug":308,"sort_by_date":36,"position":309,"tag_list":310,"is_startpage":42,"parent_id":43,"meta_data":36,"group_id":311,"first_published_at":312,"release_id":36,"lang":46,"path":36,"alternates":313,"default_full_slug":36,"translated_slugs":36},"Default Footer","2024-08-09T18:06:59.024Z","2025-09-04T06:24:46.223Z","2025-09-04T06:24:46.241Z",10082753,"e59e67ac-248a-482f-84a1-53d4f318186a",{"_uid":140,"about":141,"logos":142,"socials":146,"sections":172,"component":289,"cta_title":290,"bottom_links":291,"cta_subtitle":305,"cta_button_link":306,"cta_button_text":247},"830983f5-c4c4-43c8-b150-86a5e3fa6dc8","Foxy’s hosted cart & payment page allow you to sell anything, using your existing website or platform.",[143],{"id":144,"alt":16,"name":16,"focus":16,"title":16,"filename":145,"copyright":16,"fieldtype":37},14760,"https:\u002F\u002Fa-us.storyblok.com\u002Ff\u002F1001040\u002Fx\u002F3b030847ec\u002Fb-corp.svg",[147,154,160,166],{"_uid":148,"icon":149,"link":150,"name":152,"component":153},"faf0a618-ea94-42ea-9182-03be18c43216","fa-facebook",{"id":16,"url":151,"linktype":100,"fieldtype":88,"cached_url":151},"https:\u002F\u002Fwww.facebook.com\u002Ffoxycart","Facebook","footer___social",{"_uid":155,"icon":156,"link":157,"name":159,"component":153},"14309c18-7e79-423e-b375-34555bac0811","fa-instagram",{"id":16,"url":158,"linktype":100,"fieldtype":88,"cached_url":158},"https:\u002F\u002Fwww.instagram.com\u002Ffoxy_io","Instagram",{"_uid":161,"icon":162,"link":163,"name":165,"component":153},"8f7fe7cf-0dd3-4596-8334-226ea466716a","fa-linkedin",{"id":16,"url":164,"linktype":100,"fieldtype":88,"cached_url":164},"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Ffoxycart.com","LinkedIn",{"_uid":167,"icon":168,"link":169,"name":171,"component":153},"90a675b4-dd97-40b5-be09-00a87223d4c5","fa-youtube",{"id":16,"url":170,"linktype":100,"fieldtype":88,"cached_url":170},"https:\u002F\u002Fwww.youtube.com\u002Fuser\u002Ffoxycart","Youtube",[173,203,248,270],{"_uid":174,"name":175,"items":176,"component":202},"82849945-282f-488c-b18d-a8d2252f514a","Company",[177,184,190,196],{"_uid":178,"link":179,"title":182,"new_tab":42,"component":183},"1f699ab1-938b-4d9d-9825-aabcbe6f57fe",{"id":180,"url":16,"linktype":87,"fieldtype":88,"cached_url":181},"63634293-a749-4226-9439-9f38ee6dcda0","about-us","About Us","footer___menu_items",{"_uid":185,"link":186,"title":189,"new_tab":42,"component":183},"b26b00f1-a0e7-4be2-8ab3-428b8cc841f8",{"id":187,"url":16,"linktype":87,"fieldtype":88,"cached_url":188},"26cb7c55-faed-4a77-a291-1552d4111b3e","how-foxy-works","How Foxy Works",{"_uid":191,"link":192,"title":195,"new_tab":42,"component":183},"b40c68a0-1ceb-4226-9515-6176534f61fe",{"id":193,"url":16,"linktype":87,"fieldtype":88,"cached_url":194},"dc6657d7-7f4f-4c0d-b781-e971b038ee26","for-good","Foxy For Good",{"_uid":197,"link":198,"title":201,"new_tab":42,"component":183},"3ad0c134-bef9-4fff-b891-e09f16109036",{"id":199,"url":16,"linktype":87,"fieldtype":88,"cached_url":200},"23cae210-baf4-4588-9862-d09f4f52ccd2","brand-assets","Brand Assets","footer___section",{"_uid":204,"name":205,"items":206,"component":202},"a6805fa8-ac60-47f1-b8f0-f27aded0afbe","Product",[207,213,219,225,231,237,243],{"_uid":208,"link":209,"title":212,"new_tab":42,"component":183},"b39c8a4e-2383-486f-b76a-11fbb15d8134",{"id":210,"url":16,"linktype":87,"fieldtype":88,"cached_url":211},"bb04690f-fe98-4ce6-80be-05b950f2364f","features\u002F","Features",{"_uid":214,"link":215,"title":218,"new_tab":42,"component":183},"64f8a41f-c181-433d-bc0a-fc94e71ecbf6",{"id":216,"url":16,"linktype":87,"fieldtype":88,"cached_url":217},"c450c58d-761d-48c0-a9af-0b064611689b","pricing","Pricing",{"_uid":220,"link":221,"title":224,"new_tab":42,"component":183},"6e0b287f-fd8c-4146-9e0e-0ab0b5c9ce3c",{"id":222,"url":16,"linktype":87,"fieldtype":88,"cached_url":223},"fab20ad9-e76a-4947-b709-3a6fdfa88028","blog\u002Fcategories\u002Fproduct-updates","Product Updates",{"_uid":226,"link":227,"title":230,"new_tab":42,"component":183},"47e5a074-a6b5-4f1c-8c2f-89a2ae9f83eb",{"id":228,"url":16,"linktype":87,"fieldtype":88,"cached_url":229},"d2c83612-d611-47f3-a3b4-ca7fe08540b8","changelogs\u002F","Changelogs",{"_uid":232,"link":233,"title":236,"new_tab":42,"component":183},"b5c08774-542f-4ffd-b357-c94d674488b9",{"id":234,"url":16,"linktype":87,"fieldtype":88,"cached_url":235},"08876121-0df3-4ed9-aa11-902b3e41cd02","whats-next","What's Next",{"_uid":238,"link":239,"title":242,"new_tab":42,"component":183},"9c2704ed-6d9f-43e1-9e67-c8d91c083288",{"id":240,"url":16,"linktype":87,"fieldtype":88,"cached_url":241},"056a7857-b18f-4025-8f97-91a38fc19bc8","compare\u002F","Compare",{"_uid":244,"link":245,"title":247,"new_tab":42,"component":183},"5f2db35b-674b-406a-8fa7-d246633af9fe",{"id":16,"url":246,"linktype":100,"fieldtype":88,"cached_url":246},"https:\u002F\u002Fadmin.foxy.io\u002Fsign-up","Try Foxy Free",{"_uid":249,"name":250,"items":251,"component":202},"63fa1f29-4252-4640-9922-fe310e69e54a","Security",[252,258,264],{"_uid":253,"link":254,"title":257,"new_tab":42,"component":183},"1158ddb6-9eb0-466f-8eb6-7ca2ae66c8b8",{"id":255,"url":16,"linktype":87,"fieldtype":88,"cached_url":256},"1f58fb2c-8681-4742-b6e8-09999beae9f6","security-contact","Security Contact",{"_uid":259,"link":260,"title":263,"new_tab":42,"component":183},"9a79c54a-6022-4dfd-854b-766f5e4703ba",{"id":261,"url":16,"linktype":87,"fieldtype":88,"cached_url":262},"55cbfcc3-425a-4261-8037-54e919851d2d","pci","PCI Compliance",{"_uid":265,"link":266,"title":269,"new_tab":42,"component":183},"0b85f5b6-9534-4071-b323-b39d053dd4d7",{"id":267,"url":16,"linktype":87,"fieldtype":88,"cached_url":268},"c3ac0fe3-83e2-4879-afbd-d4c83e1590df","help\u002Farticles\u002Four-official-domains-public-code","Domains & Codebases",{"_uid":271,"name":272,"items":273,"component":202},"998ded67-d107-49f4-8154-ca6be51671ec","Support",[274,277,280,283,286],{"_uid":275,"link":276,"title":89,"new_tab":42,"component":183},"594ffd35-3049-4004-bb08-0db568ebd819",{"id":122,"url":16,"linktype":87,"fieldtype":88,"cached_url":123},{"_uid":278,"link":279,"title":101,"new_tab":72,"component":183},"0a1a55ab-a985-4f9d-8b42-26da714d0c1c",{"id":16,"url":99,"linktype":100,"fieldtype":88,"cached_url":99},{"_uid":281,"link":282,"title":106,"new_tab":72,"component":183},"61e0b7c8-aadf-419b-a339-b3ccabc65bf4",{"id":16,"url":105,"linktype":100,"fieldtype":88,"cached_url":105},{"_uid":284,"link":285,"title":111,"new_tab":72,"component":183},"fd67a89e-1c54-4d31-94b5-64be999062d6",{"id":16,"url":110,"linktype":100,"fieldtype":88,"cached_url":110},{"_uid":287,"link":288,"title":117,"new_tab":42,"component":183},"231a6f71-e996-4ad4-b033-d4d5542f34f0",{"id":115,"url":16,"linktype":87,"fieldtype":88,"cached_url":116},"footer","Get started with our *unlimited free trial*.",[292,299],{"_uid":293,"link":294,"text":297,"component":298},"f0b77210-2632-45a2-8436-e57cad84d01a",{"id":295,"url":16,"linktype":87,"fieldtype":88,"cached_url":296},"60ba16a2-c1f4-485f-b978-8d2eeeafbf5a","terms-of-service","Terms of Service","footer___bottom_links",{"_uid":300,"link":301,"text":304,"component":298},"4bd497b0-993f-4b4d-a5b7-8a49c7c8fec9",{"id":302,"url":16,"linktype":87,"fieldtype":88,"cached_url":303},"332302b9-1d18-4016-b9c8-9b33c72d782b","privacy-policy","Privacy Policy","No credit card required.",{"id":16,"url":246,"linktype":100,"fieldtype":88,"cached_url":246},"default-footer","navigation\u002Fdefault-footer",50,[],"11006268-07f9-41e9-96f3-c51fb723399d","2022-09-21T20:39:02.357Z",[],{"name":315,"created_at":316,"published_at":317,"updated_at":318,"id":319,"uuid":320,"content":321,"slug":508,"full_slug":509,"sort_by_date":36,"position":510,"tag_list":511,"is_startpage":42,"parent_id":512,"meta_data":36,"group_id":513,"first_published_at":317,"release_id":36,"lang":46,"path":36,"alternates":514,"default_full_slug":36,"translated_slugs":36},"Validate VAT IDs at checkout","2026-07-22T17:07:47.052Z","2026-07-22T17:44:58.054Z","2026-07-22T17:44:58.069Z",200910713096309,"7c751493-a133-4b62-8ec2-4e4339dd9d64",{"_uid":322,"body":323,"name":315,"image":503,"pinned":42,"summary":505,"category":506,"component":20,"related_articles":507},"db943273-05dc-43f0-bf8f-6598bf35e095",{"type":324,"content":325},"doc",[326,342,349,361,366,371,376,382,394,399,403,408,413,417,422,427,432,475,487,492],{"type":327,"attrs":328,"content":329},"paragraph",{"textAlign":36},[330,333,340],{"text":331,"type":332},"Currently the Tax ID field on the checkout doesn't provide any validation that the value is correct - just that a value is entered. Native validation is planned as a future enhancement, but in the meantime - you can use a service like ","text",{"text":334,"type":332,"marks":335},"Vatlayer",[336],{"type":337,"attrs":338},"link",{"href":339,"uuid":36,"anchor":36,"target":36,"linktype":100},"https:\u002F\u002Fvatlayer.com\u002F",{"text":341,"type":332}," to validate the entered VAT ID using our pre-checkout webhook.",{"type":343,"attrs":344,"content":346},"heading",{"level":345,"textAlign":36},2,[347],{"text":348,"type":332},"Signup with Vatlayer",{"type":327,"attrs":350,"content":351},{"textAlign":36},[352,354,359],{"text":353,"type":332},"An account is required with Vatlayer for the validation to work, so you can ",{"text":355,"type":332,"marks":356},"signup from their website here",[357],{"type":337,"attrs":358},{"href":339,"uuid":36,"anchor":36,"target":36,"linktype":100},{"text":360,"type":332},". Vatlayer has a free plan that supports up to 100 requests per month, and then paid plans that support more.",{"type":343,"attrs":362,"content":363},{"level":345,"textAlign":36},[364],{"text":365,"type":332},"Set up your pre-checkout webhook",{"type":327,"attrs":367,"content":368},{"textAlign":36},[369],{"text":370,"type":332},"Next, you'll need to create an endpoint on your server that the checkout can send a validation request to when a customer attempts to complete the checkout. The following endpoint is written in PHP, but should be easily ported to other languages too:",{"type":327,"attrs":372,"content":373},{"textAlign":36},[374],{"text":375,"type":332},"php",{"type":377,"attrs":378,"content":379},"code_block",{"class":36},[380],{"text":381,"type":332},"\u003C?php\n$rawPost = file_get_contents('php:\u002F\u002Finput');\n$cart_details = json_decode($rawPost, true);\n \n$response = array(\n    'ok' => true,\n    'details' => ''\n);\n\n\u002F\u002F Your Vatlayer Access Key\n$access_key = 'YOUR_ACCESS_KEY';\n\n$vat_number = $cart_details['_embedded']['fx:customer']['tax_id'];\n\nif ($vat_number != \"\") {\n    $ch = curl_init('http:\u002F\u002Fapilayer.net\u002Fapi\u002Fvalidate?access_key='.$access_key.'&vat_number='.$vat_number.'');  \n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n    $json = curl_exec($ch);\n    curl_close($ch);\n\n    $validationResult = json_decode($json, true);\n\n    if ($validationResult['valid'] == false) {\n        $response['ok'] = false;\n        $response['details'] = \"Your VAT ID does not appear to be valid. Please review your VAT ID and try again.\";\n    }\n}\n \nheader('Content-Type: application\u002Fjson');\nprint json_encode($response);",{"type":327,"attrs":383,"content":384},{"textAlign":36},[385,387,392],{"text":386,"type":332},"Copy the above code to a file on your computer, and update the string ",{"text":388,"type":332,"marks":389},"YOUR_ACCESS_KEY",[390],{"type":391},"code",{"text":393,"type":332}," with the access key provided to you from Vatlayer. You may also want to edit the error that is returned to the customer if the validation does not pass, found towards the bottom of the script.",{"type":327,"attrs":395,"content":396},{"textAlign":36},[397],{"text":398,"type":332},"The validation fails if Vatlayer does not confirm that the VAT ID is valid. If you just want to check if the VAT ID is the right format, but not if it's valid, you can make the following change. Look for this line in the script:",{"type":327,"attrs":400,"content":401},{"textAlign":36},[402],{"text":375,"type":332},{"type":377,"attrs":404,"content":405},{"class":36},[406],{"text":407,"type":332},"if ($validationResult['valid'] == false) {",{"type":327,"attrs":409,"content":410},{"textAlign":36},[411],{"text":412,"type":332},"And update it to instead look like this:",{"type":327,"attrs":414,"content":415},{"textAlign":36},[416],{"text":375,"type":332},{"type":377,"attrs":418,"content":419},{"class":36},[420],{"text":421,"type":332},"if ($validationResult['format_valid'] == false) {",{"type":327,"attrs":423,"content":424},{"textAlign":36},[425],{"text":426,"type":332},"Once you've completed editing of the code, upload the file to your server in a publicly accessible location.",{"type":343,"attrs":428,"content":429},{"level":345,"textAlign":36},[430],{"text":431,"type":332},"Enable the pre-checkout webhook",{"type":327,"attrs":433,"content":434},{"textAlign":36},[435,437,442,444,449,451,455,457,461,463,467,469,473],{"text":436,"type":332},"Once your endpoint is uploaded, enable it in your store. In the Foxy admin (",{"text":438,"type":332,"marks":439},"https:\u002F\u002Fadmin.foxy.io",[440],{"type":337,"attrs":441},{"href":438,"uuid":36,"anchor":36,"target":36,"linktype":100},{"text":443,"type":332},"), go to ",{"text":445,"type":332,"marks":446},"Settings > Payments",[447],{"type":448},"bold",{"text":450,"type":332},", open your payment method set, and open ",{"text":452,"type":332,"marks":453},"Fraud protection",[454],{"type":448},{"text":456,"type":332},". Enable the ",{"text":458,"type":332,"marks":459},"Pre-checkout webhook",[460],{"type":448},{"text":462,"type":332}," and enter the URL to the script you uploaded earlier in the ",{"text":464,"type":332,"marks":465},"URL",[466],{"type":448},{"text":468,"type":332}," field. It should be a full secure URL beginning with ",{"text":470,"type":332,"marks":471},"https:\u002F\u002F",[472],{"type":391},{"text":474,"type":332},".",{"type":327,"attrs":476,"content":477},{"textAlign":36},[478,480,485],{"text":479,"type":332},"You can also set how the checkout should behave if your endpoint fails to load correctly - whether to approve or deny the transaction. For this set up, unless you specifically need to ",{"text":481,"type":332,"marks":482},"always",[483],{"type":484},"italic",{"text":486,"type":332}," know that the VAT is valid, you'll probably want to leave it as approve.",{"type":343,"attrs":488,"content":489},{"level":345,"textAlign":36},[490],{"text":491,"type":332},"Test the integration",{"type":327,"attrs":493,"content":494},{"textAlign":36},[495,497,501],{"text":496,"type":332},"At this point - you will have basic VAT validation enabled on your checkout. You can test that it's working by attempting to place an order on your store, and entering an invalid VAT ID on the checkout. If your store is live, you should be ok to enter a fake credit card number (like ",{"text":498,"type":332,"marks":499},"4242 4242 4242 4242",[500],{"type":391},{"text":502,"type":332},") as with an invalid VAT ID the gateway request won't ever happen because the pre-checkout webhook happens before that point.",{"id":36,"alt":36,"name":16,"focus":36,"title":36,"source":36,"filename":16,"copyright":36,"fieldtype":37,"meta_data":504},{},"How to validate customer VAT IDs at checkout using the Pre-Payment Webhook and Vatlayer.","d8395b12-d86d-4c10-b9a0-1f2d3b100f1a",[],"validate-vat-ids-at-checkout","help\u002Farticles\u002Fvalidate-vat-ids-at-checkout",-4320,[],2659,"a1b89e65-e506-448f-95d4-25a03b89728d",[],{"html":516,"sections":517,"segments":527},"\u003Cp>Currently the Tax ID field on the checkout doesn&#039;t provide any validation that the value is correct - just that a value is entered. Native validation is planned as a future enhancement, but in the meantime - you can use a service like \u003Ca href=\"https:\u002F\u002Fvatlayer.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vatlayer\u003C\u002Fa> to validate the entered VAT ID using our pre-checkout webhook.\u003C\u002Fp>\u003Csection id=\"signup-with-vatlayer\" data-title=\"Signup with Vatlayer\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"signup-with-vatlayer\">Signup with Vatlayer\u003C\u002Fh2>\u003Cp>An account is required with Vatlayer for the validation to work, so you can \u003Ca href=\"https:\u002F\u002Fvatlayer.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">signup from their website here\u003C\u002Fa>. Vatlayer has a free plan that supports up to 100 requests per month, and then paid plans that support more.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"set-up-your-pre-checkout-webhook\" data-title=\"Set up your pre-checkout webhook\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"set-up-your-pre-checkout-webhook\">Set up your pre-checkout webhook\u003C\u002Fh2>\u003Cp>Next, you&#039;ll need to create an endpoint on your server that the checkout can send a validation request to when a customer attempts to complete the checkout. The following endpoint is written in PHP, but should be easily ported to other languages too:\u003C\u002Fp>\u003Cp>php\u003C\u002Fp>\u003Cdiv class=\"position-relative w-100 overflow-hidden rounded-2\" data-code-block>\u003Cdiv class=\"d-flex justify-content-end border-bottom\" style=\"background:#2b2c3b;\">\u003Cbutton type=\"button\" class=\"btn btn-link btn-sm text-light\" title=\"Copy\" data-code-button>\u003Cspan data-code-default style=\"\">\u003Ci class=\"fal fa-copy me-2\">\u003C\u002Fi> Copy \u003C\u002Fspan>\u003Cspan class=\"text-success\" data-code-success style=\"display:none;\">\u003Ci class=\"fal fa-check ms-2\">\u003C\u002Fi> Copied \u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"small\">\u003Cpre class=\"hljs p-2\" data-code-content>\u003Cspan class=\"hljs-meta\">&lt;?php\n$rawPost = file_get_contents(&#x27;php:\u002F\u002Finput&#x27;);\n$cart_details = json_decode($rawPost, true);\n \n$response = array(\n    &#x27;ok&#x27; =&gt; true,\n    &#x27;details&#x27; =&gt; &#x27;&#x27;\n);\n\n\u002F\u002F Your Vatlayer Access Key\n$access_key = &#x27;YOUR_ACCESS_KEY&#x27;;\n\n$vat_number = $cart_details[&#x27;_embedded&#x27;][&#x27;fx:customer&#x27;][&#x27;tax_id&#x27;];\n\nif ($vat_number != &quot;&quot;) {\n    $ch = curl_init(&#x27;http:\u002F\u002Fapilayer.net\u002Fapi\u002Fvalidate?access_key=&#x27;.$access_key.&#x27;&amp;vat_number=&#x27;.$vat_number.&#x27;&#x27;);  \n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n    $json = curl_exec($ch);\n    curl_close($ch);\n\n    $validationResult = json_decode($json, true);\n\n    if ($validationResult[&#x27;valid&#x27;] == false) {\n        $response[&#x27;ok&#x27;] = false;\n        $response[&#x27;details&#x27;] = &quot;Your VAT ID does not appear to be valid. Please review your VAT ID and try again.&quot;;\n    }\n}\n \nheader(&#x27;Content-Type: application\u002Fjson&#x27;);\nprint json_encode($response);\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>Copy the above code to a file on your computer, and update the string \u003Ccode class=\"badge bg-soft-danger text-danger\">YOUR_ACCESS_KEY\u003C\u002Fcode> with the access key provided to you from Vatlayer. You may also want to edit the error that is returned to the customer if the validation does not pass, found towards the bottom of the script.\u003C\u002Fp>\u003Cp>The validation fails if Vatlayer does not confirm that the VAT ID is valid. If you just want to check if the VAT ID is the right format, but not if it&#039;s valid, you can make the following change. Look for this line in the script:\u003C\u002Fp>\u003Cp>php\u003C\u002Fp>\u003Cdiv class=\"position-relative w-100 overflow-hidden rounded-2\" data-code-block>\u003Cdiv class=\"d-flex justify-content-end border-bottom\" style=\"background:#2b2c3b;\">\u003Cbutton type=\"button\" class=\"btn btn-link btn-sm text-light\" title=\"Copy\" data-code-button>\u003Cspan data-code-default style=\"\">\u003Ci class=\"fal fa-copy me-2\">\u003C\u002Fi> Copy \u003C\u002Fspan>\u003Cspan class=\"text-success\" data-code-success style=\"display:none;\">\u003Ci class=\"fal fa-check ms-2\">\u003C\u002Fi> Copied \u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"small\">\u003Cpre class=\"hljs p-2\" data-code-content>if ($validationResult[&#x27;valid&#x27;] == false) {\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>And update it to instead look like this:\u003C\u002Fp>\u003Cp>php\u003C\u002Fp>\u003Cdiv class=\"position-relative w-100 overflow-hidden rounded-2\" data-code-block>\u003Cdiv class=\"d-flex justify-content-end border-bottom\" style=\"background:#2b2c3b;\">\u003Cbutton type=\"button\" class=\"btn btn-link btn-sm text-light\" title=\"Copy\" data-code-button>\u003Cspan data-code-default style=\"\">\u003Ci class=\"fal fa-copy me-2\">\u003C\u002Fi> Copy \u003C\u002Fspan>\u003Cspan class=\"text-success\" data-code-success style=\"display:none;\">\u003Ci class=\"fal fa-check ms-2\">\u003C\u002Fi> Copied \u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cdiv class=\"small\">\u003Cpre class=\"hljs p-2\" data-code-content>if ($validationResult[&#x27;format_valid&#x27;] == false) {\u003C\u002Fpre>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cp>Once you&#039;ve completed editing of the code, upload the file to your server in a publicly accessible location.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"enable-the-pre-checkout-webhook\" data-title=\"Enable the pre-checkout webhook\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"enable-the-pre-checkout-webhook\">Enable the pre-checkout webhook\u003C\u002Fh2>\u003Cp>Once your endpoint is uploaded, enable it in your store. In the Foxy admin (\u003Ca href=\"https:\u002F\u002Fadmin.foxy.io\" class=\"\">https:\u002F\u002Fadmin.foxy.io\u003C\u002Fa>), go to \u003Cstrong>Settings &gt; Payments\u003C\u002Fstrong>, open your payment method set, and open \u003Cstrong>Fraud protection\u003C\u002Fstrong>. Enable the \u003Cstrong>Pre-checkout webhook\u003C\u002Fstrong> and enter the URL to the script you uploaded earlier in the \u003Cstrong>URL\u003C\u002Fstrong> field. It should be a full secure URL beginning with \u003Ccode class=\"badge bg-soft-danger text-danger\">https:\u002F\u002F\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>You can also set how the checkout should behave if your endpoint fails to load correctly - whether to approve or deny the transaction. For this set up, unless you specifically need to \u003Cem>always\u003C\u002Fem> know that the VAT is valid, you&#039;ll probably want to leave it as approve.\u003C\u002Fp>\u003C\u002Fsection>\u003Csection id=\"test-the-integration\" data-title=\"Test the integration\" data-title-node=\"H2\">\u003Chr class=\"my-8\" style=\"margin-left: -48px; margin-right: -40vw\">\u003Ch2 data-anchor-id=\"test-the-integration\">Test the integration\u003C\u002Fh2>\u003Cp>At this point - you will have basic VAT validation enabled on your checkout. You can test that it&#039;s working by attempting to place an order on your store, and entering an invalid VAT ID on the checkout. If your store is live, you should be ok to enter a fake credit card number (like \u003Ccode class=\"badge bg-soft-danger text-danger\">4242 4242 4242 4242\u003C\u002Fcode>) as with an invalid VAT ID the gateway request won&#039;t ever happen because the pre-checkout webhook happens before that point.\u003C\u002Fp>\u003C\u002Fsection>",[518,521,523,525],{"id":519,"title":348,"level":520},"signup-with-vatlayer","H2",{"id":522,"title":365,"level":520},"set-up-your-pre-checkout-webhook",{"id":524,"title":431,"level":520},"enable-the-pre-checkout-webhook",{"id":526,"title":491,"level":520},"test-the-integration",[528],{"type":529,"content":530},"html","\u003Cp>Currently the Tax ID field on the checkout doesn&#039;t provide any validation that the value is correct - just that a value is entered. Native validation is planned as a future enhancement, but in the meantime - you can use a service like \u003Ca href=\"https:\u002F\u002Fvatlayer.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Vatlayer\u003C\u002Fa> to validate the entered VAT ID using our pre-checkout webhook.\u003C\u002Fp>\u003Ch2>Signup with Vatlayer\u003C\u002Fh2>\u003Cp>An account is required with Vatlayer for the validation to work, so you can \u003Ca href=\"https:\u002F\u002Fvatlayer.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">signup from their website here\u003C\u002Fa>. Vatlayer has a free plan that supports up to 100 requests per month, and then paid plans that support more.\u003C\u002Fp>\u003Ch2>Set up your pre-checkout webhook\u003C\u002Fh2>\u003Cp>Next, you&#039;ll need to create an endpoint on your server that the checkout can send a validation request to when a customer attempts to complete the checkout. The following endpoint is written in PHP, but should be easily ported to other languages too:\u003C\u002Fp>\u003Cp>php\u003C\u002Fp>\u003Cpre>\u003Ccode>&lt;?php\n$rawPost = file_get_contents(&#039;php:\u002F\u002Finput&#039;);\n$cart_details = json_decode($rawPost, true);\n \n$response = array(\n    &#039;ok&#039; =&gt; true,\n    &#039;details&#039; =&gt; &#039;&#039;\n);\n\n\u002F\u002F Your Vatlayer Access Key\n$access_key = &#039;YOUR_ACCESS_KEY&#039;;\n\n$vat_number = $cart_details[&#039;_embedded&#039;][&#039;fx:customer&#039;][&#039;tax_id&#039;];\n\nif ($vat_number != &quot;&quot;) {\n    $ch = curl_init(&#039;http:\u002F\u002Fapilayer.net\u002Fapi\u002Fvalidate?access_key=&#039;.$access_key.&#039;&amp;vat_number=&#039;.$vat_number.&#039;&#039;);  \n    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n\n    $json = curl_exec($ch);\n    curl_close($ch);\n\n    $validationResult = json_decode($json, true);\n\n    if ($validationResult[&#039;valid&#039;] == false) {\n        $response[&#039;ok&#039;] = false;\n        $response[&#039;details&#039;] = &quot;Your VAT ID does not appear to be valid. Please review your VAT ID and try again.&quot;;\n    }\n}\n \nheader(&#039;Content-Type: application\u002Fjson&#039;);\nprint json_encode($response);\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Copy the above code to a file on your computer, and update the string \u003Ccode class=\"badge bg-soft-danger text-danger\">YOUR_ACCESS_KEY\u003C\u002Fcode> with the access key provided to you from Vatlayer. You may also want to edit the error that is returned to the customer if the validation does not pass, found towards the bottom of the script.\u003C\u002Fp>\u003Cp>The validation fails if Vatlayer does not confirm that the VAT ID is valid. If you just want to check if the VAT ID is the right format, but not if it&#039;s valid, you can make the following change. Look for this line in the script:\u003C\u002Fp>\u003Cp>php\u003C\u002Fp>\u003Cpre>\u003Ccode>if ($validationResult[&#039;valid&#039;] == false) {\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>And update it to instead look like this:\u003C\u002Fp>\u003Cp>php\u003C\u002Fp>\u003Cpre>\u003Ccode>if ($validationResult[&#039;format_valid&#039;] == false) {\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Once you&#039;ve completed editing of the code, upload the file to your server in a publicly accessible location.\u003C\u002Fp>\u003Ch2>Enable the pre-checkout webhook\u003C\u002Fh2>\u003Cp>Once your endpoint is uploaded, enable it in your store. In the Foxy admin (\u003Ca href=\"https:\u002F\u002Fadmin.foxy.io\" class=\"\">https:\u002F\u002Fadmin.foxy.io\u003C\u002Fa>), go to \u003Cstrong>Settings &gt; Payments\u003C\u002Fstrong>, open your payment method set, and open \u003Cstrong>Fraud protection\u003C\u002Fstrong>. Enable the \u003Cstrong>Pre-checkout webhook\u003C\u002Fstrong> and enter the URL to the script you uploaded earlier in the \u003Cstrong>URL\u003C\u002Fstrong> field. It should be a full secure URL beginning with \u003Ccode class=\"badge bg-soft-danger text-danger\">https:\u002F\u002F\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>You can also set how the checkout should behave if your endpoint fails to load correctly - whether to approve or deny the transaction. For this set up, unless you specifically need to \u003Cem>always\u003C\u002Fem> know that the VAT is valid, you&#039;ll probably want to leave it as approve.\u003C\u002Fp>\u003Ch2>Test the integration\u003C\u002Fh2>\u003Cp>At this point - you will have basic VAT validation enabled on your checkout. You can test that it&#039;s working by attempting to place an order on your store, and entering an invalid VAT ID on the checkout. If your store is live, you should be ok to enter a fake credit card number (like \u003Ccode class=\"badge bg-soft-danger text-danger\">4242 4242 4242 4242\u003C\u002Fcode>) as with an invalid VAT ID the gateway request won&#039;t ever happen because the pre-checkout webhook happens before that point.\u003C\u002Fp>",{"name":532,"created_at":533,"published_at":534,"updated_at":535,"id":536,"uuid":115,"content":537,"slug":116,"full_slug":116,"sort_by_date":36,"position":714,"tag_list":715,"is_startpage":42,"parent_id":36,"meta_data":36,"group_id":716,"first_published_at":717,"release_id":36,"lang":46,"path":36,"alternates":718,"default_full_slug":36,"translated_slugs":36},"Contact","2022-09-23T19:56:58.957Z","2025-05-08T18:24:40.382Z","2025-05-08T18:24:40.392Z",3138,{"seo":538,"_uid":541,"title":542,"action":543,"fields":544,"method":690,"columns":691,"subtitle":705,"component":116,"button_text":711,"submit_title":712,"submit_subtitle":713},{"_uid":539,"title":532,"plugin":540,"description":16},"24ff7574-3bcc-48d2-85b5-e529dfea1cc4","meta-fields","8f54f1da-9d8f-49b2-89e7-840e886491cb","We're here to help.","https:\u002F\u002Fusebasin.com\u002Ff\u002F029f48d65402",[545,550,554,661,664,669,684],{"_uid":546,"name":547,"type":332,"label":548,"options":16,"required":72,"component":549,"placeholder":16},"9a70b226-2036-4f90-a052-b3efa61c5896","name","Name","form___field",{"_uid":551,"name":552,"type":552,"label":553,"options":16,"required":72,"component":549,"placeholder":16},"86ba35be-ff43-4a28-8633-14052a8f6622","email","Email Address",{"_uid":555,"name":556,"type":557,"label":558,"options":559,"required":72,"component":549,"conditions":560,"placeholder":16},"3f827475-492c-4f97-aa1e-2386ac263b6c","topic","select","Topic","Presales, Support, Billing, Partnerships, Order Enquiry, Other",[561,615,625,632,640,648,654],{"_uid":562,"equals":563,"fields":564,"component":614},"e21d97dd-e68e-4fa6-ba97-bc40f3041dde","Order Enquiry",[565],{"_uid":566,"body":567,"type":612,"title":16,"component":613},"b64992bc-6d53-48b8-b7a0-d81e5a062e50",{"type":324,"content":568},[569],{"type":327,"content":570},[571,573,580,582,584,585,589,591,595,603,605,610],{"text":572,"type":332},"We are ",{"text":574,"type":332,"marks":575},"Foxy.io",[576],{"type":337,"attrs":577},{"href":578,"uuid":36,"anchor":36,"custom":579,"target":36,"linktype":100},"http:\u002F\u002FFoxy.io",{},{"text":581,"type":332},", an ecommerce platform powering ecommerce for other merchants. We do not sell products, and are unable to assist with questions about order statuses or refunds for any merchants using our platform. Please contact the merchant you ordered from for assistance. If you’d like to report a store using Foxy for fraudulent practices, please select ‘other’ in the subject.",{"type":583},"hard_break",{"type":583},{"text":586,"type":332,"marks":587},"NOTE:",[588],{"type":448},{"text":590,"type":332}," We are ",{"text":592,"type":332,"marks":593},"not ",[594],{"type":484},{"text":596,"type":332,"marks":597},"Foxy.in",[598,602],{"type":337,"attrs":599},{"href":600,"uuid":36,"anchor":36,"custom":601,"target":36,"linktype":100},"http:\u002F\u002FFoxy.in",{},{"type":484},{"text":604,"type":332},". We are not in any way affiliated with ",{"text":596,"type":332,"marks":606},[607],{"type":337,"attrs":608},{"href":600,"uuid":36,"anchor":36,"custom":609,"target":36,"linktype":100},{},{"text":611,"type":332},", and cannot help in any way with your order from that website.","danger","global___alert","form___condition",{"_uid":616,"equals":617,"fields":618,"component":614},"8765c3e1-25cf-44aa-b8ea-fc6094acf9c3","Presales",[619],{"_uid":620,"name":621,"type":622,"label":16,"options":16,"required":42,"component":549,"conditions":623,"placeholder":16,"default_value":624},"cf464f8e-d643-4f6e-af29-d3abffaf7380","department_email_address","hidden",[],"hello@foxy.io",{"_uid":626,"equals":272,"fields":627,"component":614},"4007b6d8-77e5-421d-bd1e-6f336dd853fb",[628],{"_uid":629,"name":621,"type":622,"label":16,"options":16,"required":42,"component":549,"conditions":630,"placeholder":16,"default_value":631},"7b4c6aa5-a68c-45e0-9ce1-0a36af10c0c2",[],"help@foxy.io",{"_uid":633,"equals":634,"fields":635,"component":614},"1dbb8f11-613d-43cd-9e09-1b94f6e19219","Billing",[636],{"_uid":637,"name":621,"type":622,"label":16,"options":16,"required":42,"component":549,"conditions":638,"placeholder":16,"default_value":639},"a0ac0d1b-bc4f-4a6c-a682-581d450b0b73",[],"help+billing@foxy.io",{"_uid":641,"equals":642,"fields":643,"component":614},"a0a53a50-7172-4a29-ba58-181e38874e12","Partnerships",[644],{"_uid":645,"name":621,"type":622,"label":16,"options":16,"required":42,"component":549,"conditions":646,"placeholder":16,"default_value":647},"7aa011d9-f374-4aed-b5a5-929b54aaf152",[],"partners@foxy.io",{"_uid":649,"equals":563,"fields":650,"component":614},"a4cd431f-25d5-41c7-bfdc-02c908c8fb47",[651],{"_uid":652,"name":621,"type":622,"label":16,"options":16,"required":42,"component":549,"conditions":653,"placeholder":16,"default_value":624},"f5d52168-d6ae-451b-94ee-2ced1cbd28ad",[],{"_uid":655,"equals":656,"fields":657,"component":614},"25aba1ed-eb41-4bbc-aa89-f7a7167ea86e","Other",[658],{"_uid":659,"name":621,"type":622,"label":16,"options":16,"required":42,"component":549,"conditions":660,"placeholder":16,"default_value":624},"f40dfaef-c203-4b71-bf4e-e1b43cef192b",[],{"_uid":662,"component":663},"e9c53a05-f40a-4510-aaf8-bc072a235a0c","form___subject",{"_uid":665,"name":666,"type":667,"label":668,"options":16,"required":72,"component":549,"placeholder":16},"a4c4d385-fff4-4978-99fb-b68cfea623d6","message","textarea","Message",{"_uid":670,"name":671,"type":557,"label":672,"options":673,"required":72,"component":549,"conditions":674,"placeholder":16},"8a3c9f85-f438-427d-9c7a-d7b295a14b5b","existing_user","Are you an existing user?","No, Yes",[675],{"_uid":676,"equals":677,"fields":678,"component":614},"115933d6-262a-4b59-8fa8-579c5ad73de1","Yes",[679],{"_uid":680,"name":681,"type":332,"label":682,"options":16,"required":72,"component":549,"conditions":683,"placeholder":16},"44b6ff23-98f0-4e95-b7f5-c23e06415c2d","subdomain","Store Subdomain",[],{"_uid":685,"name":686,"type":557,"label":687,"options":688,"required":72,"component":549,"conditions":689,"placeholder":16},"922a5cef-3af2-4113-8855-36c7910e3ee3","user_type","What type of user are you?","Developer, Designer, Merchant",[],"POST",[692],{"_uid":693,"text":694,"title":703,"component":704},"7323b90d-a93a-4bf1-baa9-20d0b7ead61b",{"type":324,"content":695},[696],{"type":327,"content":697},[698,700,701],{"text":699,"type":332},"855.369.9227",{"type":583},{"text":702,"type":332},"9:30am-6pm Central M-F","Pre-sales, Sales, & Partnerships","contact___footer_column",{"type":324,"content":706},[707],{"type":327,"content":708},[709],{"text":710,"type":332},"Get in touch to get help from our friendly support team.","Submit","Success!","Your email has been received. We'll get back to you as soon as we can, but it might take a business day. If you don't hear back from us in a timely manner, please check your spam folder to ensure our reply didn't go there.",-80,[],"2fd9fb7d-a48a-4184-acfd-30022d8d6f08","2022-09-23T20:10:45.360Z",[],[48,720,747],{"name":721,"created_at":722,"published_at":723,"updated_at":724,"id":725,"uuid":726,"content":727,"slug":741,"full_slug":742,"sort_by_date":36,"position":743,"tag_list":744,"is_startpage":42,"parent_id":73,"meta_data":36,"group_id":745,"first_published_at":723,"release_id":36,"lang":46,"path":36,"alternates":746,"default_full_slug":36,"translated_slugs":36},"Taxes","2023-01-19T16:29:41.539Z","2023-01-19T17:25:33.664Z","2023-01-19T17:25:33.710Z",28247,"1cc94adb-9972-46de-8012-0b747fec3c12",{"_uid":728,"icon":729,"name":721,"guides":730,"summary":731,"category":16,"component":58,"blog_posts":732,"content_hub":42,"icon_custom":733,"case_studies":734,"faq_sections":735,"help_articles":736,"featured_guides":737,"mailbox_category":16,"featured_articles":738,"featured_blog_posts":739,"featured_case_studies":740},"b4d76fc5-7554-4419-af57-edc9b654cecb","fa-university",[],"How taxes work in Foxy.",[],{"id":36,"alt":36,"name":16,"focus":36,"title":36,"filename":16,"copyright":36,"fieldtype":37},[],[],[],[],[],[],[],"taxes","help\u002Fcategories\u002Ftaxes",80,[],"399e677b-f067-4896-bba6-444419d3ff29",[],{"name":748,"created_at":749,"published_at":750,"updated_at":751,"id":752,"uuid":506,"content":753,"slug":766,"full_slug":767,"sort_by_date":36,"position":768,"tag_list":769,"is_startpage":42,"parent_id":73,"meta_data":36,"group_id":770,"first_published_at":771,"release_id":36,"lang":46,"path":36,"alternates":772,"default_full_slug":36,"translated_slugs":36},"Custom Tax Endpoint","2026-07-02T19:49:54.905Z","2026-07-06T21:04:27.011Z","2026-07-06T21:04:27.025Z",193872670377211,{"_uid":754,"icon":16,"name":748,"type":755,"pinned":42,"summary":756,"category":726,"component":58,"blog_posts":757,"icon_custom":758,"case_studies":760,"faq_sections":761,"featured_guides":762,"mailbox_category":16,"featured_articles":763,"featured_blog_posts":764,"featured_case_studies":765},"d5af9d6e-524e-4dc0-b859-c86a775f95ce","simple","Calculate taxes with your own system when Foxy's built-in and third-party options aren't enough.",[],{"id":36,"alt":36,"name":16,"focus":36,"title":36,"source":36,"filename":16,"copyright":36,"fieldtype":37,"meta_data":759},{},[],[],[],[],[],[],"custom-tax-endpoint","help\u002Fcategories\u002Fcustom-tax-endpoint",-560,[],"8f6745ab-2b60-4113-87aa-b5868c1dc472","2026-07-02T19:56:23.536Z",[],{},1784742855148]