Having accurate and up-to-date information about your customers’ and sellers’ tax status helps you avoid being held liable for any unpaid sales tax, VAT or GST.
Having accurate and up-to-date information about your customers’ and sellers’ tax status helps you avoid being held liable for any unpaid sales tax, VAT or GST.
By validating your business customers' Tax IDs, you are ensuring that you are dealing with tax registered business customers (B2B) and know when not to charge indirect taxes on your cross-border transactions. This leads both to cost-savings and gross margin increase vs approaching every transaction as taxable (B2C) and charging unnecessary taxes like VAT and GST that you have to remit to the tax authorities once you charge it.
Any business that sells to business customers cross-border, will need to collect their Tax IDs to determine if the transaction is taxable and for invoicing purposes.
If tax IDs are not valid for various reasons, or have expired, merchants will not be able to properly invoice these customers and will wrongfully not charge sales tax, VAT or GST.
Tax authorities across the world hold merchants liable for under-declared and unpaid taxes, along with late interest fees and penalties.
Automatically determine if a transaction is B2B or B2C
Understand whether the transaction is subject to sales tax, VAT or GST
Check if your customers’ or sellers’ Tax ID is valid
Avoid fraudulent activities and tax liabilities for your business
Our API receives data on your customer/seller location and tax ID.
We are directly linked with government databases across the globe and automatically verify the format and the syntax of a given tax ID, as well as check if the company is live in the local government database.
As a result, we validate whether the structure of any tax ID is valid and live in the country’s company registry, and whether it matches the info of the seller you are verifying.
Create your own custom use case with
Fonoa REST API - our rich prebuilt set of functions, tailored specifically to solve complex tax challenges businesses face when transacting online.
curl --request POST \
--url https://api-demo.fonoa.com/Lookup/v1/Validations \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"country_iso":"au","tin":"30616935623"}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Lookup/v1/Validations';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({country_iso: 'au', tin: '30616935623'})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Lookup/v1/Validations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = "{\"country_iso\":\"au\",\"tin\":\"30616935623\"}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Lookup/v1/Validations", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"country_iso\":\"au\",\"tin\":\"30616935623\"}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Lookup/v1/Validations"
payload = {
"country_iso": "au",
"tin": "30616935623"
}
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoa.com/Lookup/v1/Validations/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Lookup/v1/Validations/';
let options = {method: 'GET', headers: {Accept: 'application/json'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Lookup/v1/Validations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Lookup/v1/Validations/", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Lookup/v1/Validations/"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
{
"id": "2e0f83abcf22c8767cac7ae100f4bf40"
"statusQueryGetUri": "https://api.fonoatech.com/Lookup/v1/Validations/2e0f83abcf22c8767cac7ae100f4bf40"
}
{
"id": "affa65ba12c34bb99c776ecf665b5b11"
"status": "completed"
"response": {
"tin": "123123"
"formatted_tin": "123-123"
"tin_local_name": "ABN"
"format_valid": true
"checksum_valid": true
"tin_exists_online": true
"tin_active_online": true
"company_name": "ACME"
"error_code": 0
"errors": [...]
}
}
{
"databases": [
0: {
"country_iso": "hr"
"online": true
"check_time_unix": 1606911185
}
]
}
curl --request POST \
--url https://api-demo.fonoa.com/Tax/v1/RevenueChecks \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"parameters":{"customer_country":"pt","supplier_tin":"de123456789","action":"write","supplier_revenue_cc":1254.03}}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Tax/v1/RevenueChecks';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({
parameters: {
customer_country: 'pt',
supplier_tin: 'de123456789',
action: 'write',
supplier_revenue_cc: 1254.03
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Tax/v1/RevenueChecks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = "{\"parameters\":{\"customer_country\":\"pt\",\"supplier_tin\":\"de123456789\",\"action\":\"write\",\"supplier_revenue_cc\":1254.03}}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Tax/v1/RevenueChecks", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"parameters\":{\"customer_country\":\"pt\",\"supplier_tin\":\"de123456789\",\"action\":\"write\",\"supplier_revenue_cc\":1254.03}}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Tax/v1/RevenueChecks"
payload = {"parameters": {
"customer_country": "pt",
"supplier_tin": "de123456789",
"action": "write",
"supplier_revenue_cc": 1254.03
}}
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoa.com/Tax/v1/RevenueChecks/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Tax/v1/RevenueChecks/';
let options = {method: 'GET', headers: {Accept: 'application/json'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Tax/v1/RevenueChecks/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Tax/v1/RevenueChecks/", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Tax/v1/RevenueChecks/"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
curl --request POST \
--url https://api-demo.fonoa.com/Tax/v1/Calculations \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"parameters":{"customer_country":"es","supplier_country":"de","supplier_tin":"de123456789","transaction_value":1000,"transaction_service_category":"eservice","transaction_value_includes_tax":true,"increment_supplier_revenue":true}}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Tax/v1/Calculations';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({
parameters: {
customer_country: 'es',
supplier_country: 'de',
supplier_tin: 'de123456789',
transaction_value: 1000,
transaction_service_category: 'eservice',
transaction_value_includes_tax: true,
increment_supplier_revenue: true
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Tax/v1/Calculations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = "{\"parameters\":{\"customer_country\":\"es\",\"supplier_country\":\"de\",\"supplier_tin\":\"de123456789\",\"transaction_value\":1000,\"transaction_service_category\":\"eservice\",\"transaction_value_includes_tax\":true,\"increment_supplier_revenue\":true}}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Tax/v1/Calculations", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"parameters\":{\"customer_country\":\"es\",\"supplier_country\":\"de\",\"supplier_tin\":\"de123456789\",\"transaction_value\":1000,\"transaction_service_category\":\"eservice\",\"transaction_value_includes_tax\":true,\"increment_supplier_revenue\":true}}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Tax/v1/Calculations"
payload = {"parameters": {
"customer_country": "es",
"supplier_country": "de",
"supplier_tin": "de123456789",
"transaction_value": 1000,
"transaction_service_category": "eservice",
"transaction_value_includes_tax": True,
"increment_supplier_revenue": True
}}
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoa.com/Tax/v1/Calculations/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Tax/v1/Calculations/';
let options = {method: 'GET', headers: {Accept: 'application/json'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Tax/v1/Calculations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Tax/v1/Calculations/", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Tax/v1/Calculations/"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
{
"id": "2e0f83ae100f4bf4bcf22c8767cac7a0"
"statusQueryGetUri": "https://api.fonoatech.com/Tax/v1/RevenueCheck/2e0f83ae100f4bf4bcf22c8767cac7a0"
}
{
"id": "2e0f83ae100f4bf4bcf22c8767cac7a0",
"status": "completed",
"response": {
"input": {
"customer_country": "pt",
"supplier_tin": "de123456789",
"action": "write",
"supplier_revenue_cc": 1254.03
},
"result": {
"supplier_revenue_cc": 1254.03
},
"errors": [
0: "string"
]
"uuid": "2e0f83ae100f4bf4bcf22c8767cac7a0"
}
}
{
"id":"2e0f83ae100f4bf4bcf22c8767cac7a0"
"statusQueryGetUri":"https://api.fonoatech.com/Tax/v1/Calculations/2e0f83ae100f4bf4bcf22c8767cac7a0"
}
{
"id": "2e0f83ae100f4bf4bcf22c8767cac7a0"
"status": "completed"
"response": {
"input": {
"customer_country": "es"
"supplier_country": "de"
"supplier_tin": "de123456789"
"transaction_value": 1000
"customer_country_region": "string"
"transaction_service_category": "eservice"
"transaction_value_includes_tax": true
"increment_supplier_revenue": true
}
"result": {
"supplier_revenue_threshold_exceeded": true
"transaction_tax_rate": 0.23
"transaction_value_net": 101.71
"transaction_value_gross": 125.1
"transaction_tax_amount": 23.39
"transaction_currency": "eur"
"tax_local_name": "IVA"
"tax_type": "VAT"
"transaction_taxable": true
"b2c_price_inclusive_tax": true
"type": "string"
}
"errors":[
0: "string"
]
"uuid": "2e0f83ae100f4bf4bcf22c8767cac7a0"
}
}
curl --request POST \
--url https://api-demo.fonoa.com/Invoicing/v1/Invoices \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"meta":{"language_code":"en","country_code":"en","business_model":"b2b","tax_type":"vat","currency_code":"eur","invoice_number":"1","pdf_response":true,"html_response":false},"supplier":{"company_name":"Company X","address":"Address in Germany","country":"Germany","tin":"de123456789"},"customer":{"company_name":"Company Y","address":"Address in Belgium","country":"Belgium","tin":"be12345678"},"invoice":{"delivery_date":"2021-01-15T11:59:59+00:00","payment_type":"debit card","items":[{"item_number":1,"product_name":"Delivery service","quantity":1,"unit_of_measure":"pcs","unit_price":10,"tax_rate":19,"net_price":10}],"total_net_amount":10,"discount":0,"total_tax_amount":1.9,"total_amount":11.9}}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Invoicing/v1/Invoices';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({
meta: {
language_code: 'en',
country_code: 'en',
business_model: 'b2b',
tax_type: 'vat',
currency_code: 'eur',
invoice_number: '1',
pdf_response: true,
html_response: false
},
supplier: {
company_name: 'Company X',
address: 'Address in Germany',
country: 'Germany',
tin: 'de123456789'
},
customer: {
company_name: 'Company Y',
address: 'Address in Belgium',
country: 'Belgium',
tin: 'be12345678'
},
invoice: {
delivery_date: '2021-01-15T11:59:59+00:00',
payment_type: 'debit card',
items: [
{
item_number: 1,
product_name: 'Delivery service',
quantity: 1,
unit_of_measure: 'pcs',
unit_price: 10,
tax_rate: 19,
net_price: 10
}
],
total_net_amount: 10,
discount: 0,
total_tax_amount: 1.9,
total_amount: 11.9
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Invoicing/v1/Invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = "{\"meta\":{\"language_code\":\"en\",\"country_code\":\"en\",\"business_model\":\"b2b\",\"tax_type\":\"vat\",\"currency_code\":\"eur\",\"invoice_number\":\"1\",\"pdf_response\":true,\"html_response\":false},\"supplier\":{\"company_name\":\"Company X\",\"address\":\"Address in Germany\",\"country\":\"Germany\",\"tin\":\"de123456789\"},\"customer\":{\"company_name\":\"Company Y\",\"address\":\"Address in Belgium\",\"country\":\"Belgium\",\"tin\":\"be12345678\"},\"invoice\":{\"delivery_date\":\"2021-01-15T11:59:59+00:00\",\"payment_type\":\"debit card\",\"items\":[{\"item_number\":1,\"product_name\":\"Delivery service\",\"quantity\":1,\"unit_of_measure\":\"pcs\",\"unit_price\":10,\"tax_rate\":19,\"net_price\":10}],\"total_net_amount\":10,\"discount\":0,\"total_tax_amount\":1.9,\"total_amount\":11.9}}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Invoicing/v1/Invoices", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"meta\":{\"language_code\":\"en\",\"country_code\":\"en\",\"business_model\":\"b2b\",\"tax_type\":\"vat\",\"currency_code\":\"eur\",\"invoice_number\":\"1\",\"pdf_response\":true,\"html_response\":false},\"supplier\":{\"company_name\":\"Company X\",\"address\":\"Address in Germany\",\"country\":\"Germany\",\"tin\":\"de123456789\"},\"customer\":{\"company_name\":\"Company Y\",\"address\":\"Address in Belgium\",\"country\":\"Belgium\",\"tin\":\"be12345678\"},\"invoice\":{\"delivery_date\":\"2021-01-15T11:59:59+00:00\",\"payment_type\":\"debit card\",\"items\":[{\"item_number\":1,\"product_name\":\"Delivery service\",\"quantity\":1,\"unit_of_measure\":\"pcs\",\"unit_price\":10,\"tax_rate\":19,\"net_price\":10}],\"total_net_amount\":10,\"discount\":0,\"total_tax_amount\":1.9,\"total_amount\":11.9}}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Invoicing/v1/Invoices"
payload = {
"meta": {
"language_code": "en",
"country_code": "en",
"business_model": "b2b",
"tax_type": "vat",
"currency_code": "eur",
"invoice_number": "1",
"pdf_response": True,
"html_response": False
},
"supplier": {
"company_name": "Company X",
"address": "Address in Germany",
"country": "Germany",
"tin": "de123456789"
},
"customer": {
"company_name": "Company Y",
"address": "Address in Belgium",
"country": "Belgium",
"tin": "be12345678"
},
"invoice": {
"delivery_date": "2021-01-15T11:59:59+00:00",
"payment_type": "debit card",
"items": [
{
"item_number": 1,
"product_name": "Delivery service",
"quantity": 1,
"unit_of_measure": "pcs",
"unit_price": 10,
"tax_rate": 19,
"net_price": 10
}
],
"total_net_amount": 10,
"discount": 0,
"total_tax_amount": 1.9,
"total_amount": 11.9
}
}
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoa.com/Invoicing/v1/Invoices/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Invoicing/v1/Invoices/';
let options = {method: 'GET', headers: {Accept: 'application/json'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Invoicing/v1/Invoices/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Invoicing/v1/Invoices/", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Invoicing/v1/Invoices/"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
{
"id":
"khu434agqxt4nt3s0oymhcnrdbdgh27i1603725131876xhs8j8jh9thdx0mhgyvz06g2rjfntgd9"
"statusQueryGetUri":
"https://api.fonoatech.com/Invoicing/v1/Invoices/khu434agqxt4nt3s0oymhcnrdbdgh27i1603725131876xhs8j8jh9thdx0mhgyvz06g2rjfntgd9"
}
{
"id": "478dbf7f6aef4ed68d9875ed932a3545"
"status": "Completed"
"message": "string"
"base64_pdf": "JVBERi0xLjQKM...DA3CiUlRU9GCg=="
"base64_html": "PGh0bWw+CjZW...vZHk+CjwvaHRtbD4K"
"created": "2020-10-28T10:24:28.2676206+00:00"
}
curl --request POST \
--url https://api-demo.fonoa.com/Onboarding/v1/Companies \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"meta":{"country_code":"de","language_code":"de"},"general":{"company_name":"Company X","company_number":"de123456789","email":"office@companyx.de","website":"www.companyx.de","representative_name":"Klaus D.","representative_email":"klaus@companyx.de"},"specific":{"any_country_specific_field":"1"},"location":{"country_code":"de","province":"Bavaria","city":"Munich","postal_code":"80331","street":"Street in Munich","number":"12"},"ta_info":{"ta_username":"companyx","ta_password":"companyx123!","ta_certificate_base64":"c27485a2ec3d4dc2b53ccf838ac396f9","ta_certificate_password":"Vc?z9\\%Nv5"},"tax_info":{"tin":"de987654321","vat_number":"de123456789"}}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Onboarding/v1/Companies';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({
meta: {country_code: 'de', language_code: 'de'},
general: {
company_name: 'Company X',
company_number: 'de123456789',
email: 'office@companyx.de',
website: 'www.companyx.de',
representative_name: 'Klaus D.',
representative_email: 'klaus@companyx.de'
},
specific: {any_country_specific_field: '1'},
location: {
country_code: 'de',
province: 'Bavaria',
city: 'Munich',
postal_code: '80331',
street: 'Street in Munich',
number: '12'
},
ta_info: {
ta_username: 'companyx',
ta_password: 'companyx123!',
ta_certificate_base64: 'c27485a2ec3d4dc2b53ccf838ac396f9',
ta_certificate_password: 'Vc?z9\%Nv5'
},
tax_info: {tin: 'de987654321', vat_number: 'de123456789'}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Onboarding/v1/Companies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = "{\"meta\":{\"country_code\":\"de\",\"language_code\":\"de\"},\"general\":{\"company_name\":\"Company X\",\"company_number\":\"de123456789\",\"email\":\"office@companyx.de\",\"website\":\"www.companyx.de\",\"representative_name\":\"Klaus D.\",\"representative_email\":\"klaus@companyx.de\"},\"specific\":{\"any_country_specific_field\":\"1\"},\"location\":{\"country_code\":\"de\",\"province\":\"Bavaria\",\"city\":\"Munich\",\"postal_code\":\"80331\",\"street\":\"Street in Munich\",\"number\":\"12\"},\"ta_info\":{\"ta_username\":\"companyx\",\"ta_password\":\"companyx123!\",\"ta_certificate_base64\":\"c27485a2ec3d4dc2b53ccf838ac396f9\",\"ta_certificate_password\":\"Vc?z9\\\\%Nv5\"},\"tax_info\":{\"tin\":\"de987654321\",\"vat_number\":\"de123456789\"}}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Onboarding/v1/Companies", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"meta\":{\"country_code\":\"de\",\"language_code\":\"de\"},\"general\":{\"company_name\":\"Company X\",\"company_number\":\"de123456789\",\"email\":\"office@companyx.de\",\"website\":\"www.companyx.de\",\"representative_name\":\"Klaus D.\",\"representative_email\":\"klaus@companyx.de\"},\"specific\":{\"any_country_specific_field\":\"1\"},\"location\":{\"country_code\":\"de\",\"province\":\"Bavaria\",\"city\":\"Munich\",\"postal_code\":\"80331\",\"street\":\"Street in Munich\",\"number\":\"12\"},\"ta_info\":{\"ta_username\":\"companyx\",\"ta_password\":\"companyx123!\",\"ta_certificate_base64\":\"c27485a2ec3d4dc2b53ccf838ac396f9\",\"ta_certificate_password\":\"Vc?z9\\\\%Nv5\"},\"tax_info\":{\"tin\":\"de987654321\",\"vat_number\":\"de123456789\"}}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Onboarding/v1/Companies"
payload = {
"meta": {
"country_code": "de",
"language_code": "de"
},
"general": {
"company_name": "Company X",
"company_number": "de123456789",
"email": "office@companyx.de",
"website": "www.companyx.de",
"representative_name": "Klaus D.",
"representative_email": "klaus@companyx.de"
},
"specific": {"any_country_specific_field": "1"},
"location": {
"country_code": "de",
"province": "Bavaria",
"city": "Munich",
"postal_code": "80331",
"street": "Street in Munich",
"number": "12"
},
"ta_info": {
"ta_username": "companyx",
"ta_password": "companyx123!",
"ta_certificate_base64": "c27485a2ec3d4dc2b53ccf838ac396f9",
"ta_certificate_password": "Vc?z9\%Nv5"
},
"tax_info": {
"tin": "de987654321",
"vat_number": "de123456789"
}
}
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoa.com/Onboarding/v1/Companies/id \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Onboarding/v1/Companies/id';
let options = {method: 'GET', headers: {Accept: 'application/json'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Onboarding/v1/Companies/id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Onboarding/v1/Companies/id", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Onboarding/v1/Companies/id"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
curl --request POST \
--url https://api-demo.fonoa.com/Reporting/v1/Transactions \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"meta":{"language_code":"en","country_code":"de","currency_code":"eur","payment_type":"cash","invoice_type":"debit","reference_invoice_uid":"c27485a2ec3d4dc2b53ccf838ac396f9","reference_invoice_number":"1"},"supplier":{"uid":"vnnslef7f6aef4ed68d9875ed932jlfrp","tin":"de123456789"},"customer":{"uid":"fsopdfafpsfjsldfjslfsmgbmpgpwooir","pin":"87654321","tin":"cz12345678"},"operator":{"uid":"c27485a2ec3d4dc2b53ccf838ac396f9","pin":"001122334","tin":"de123456789"},"terminal":{"uid":"292d6e8862ed4e7584d1a602d074aa71"},"invoice":{"delivery_date":"2021-01-15T01:00:00+00:00","items":[{"item_number":1,"product_name":"Delivery service","quantity":1,"unit_of_measure":"pcs","unit_price":10,"tax_rate":19,"net_price":10}],"total_net_amount":10,"discount":0,"total_tax_amount":1.9,"total_amount":11.9}}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Reporting/v1/Transactions';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({
meta: {
language_code: 'en',
country_code: 'de',
currency_code: 'eur',
payment_type: 'cash',
invoice_type: 'debit',
reference_invoice_uid: 'c27485a2ec3d4dc2b53ccf838ac396f9',
reference_invoice_number: '1'
},
supplier: {uid: 'vnnslef7f6aef4ed68d9875ed932jlfrp', tin: 'de123456789'},
customer: {uid: 'fsopdfafpsfjsldfjslfsmgbmpgpwooir', pin: '87654321', tin: 'cz12345678'},
operator: {uid: 'c27485a2ec3d4dc2b53ccf838ac396f9', pin: '001122334', tin: 'de123456789'},
terminal: {uid: '292d6e8862ed4e7584d1a602d074aa71'},
invoice: {
delivery_date: '2021-01-15T01:00:00+00:00',
items: [
{
item_number: 1,
product_name: 'Delivery service',
quantity: 1,
unit_of_measure: 'pcs',
unit_price: 10,
tax_rate: 19,
net_price: 10
}
],
total_net_amount: 10,
discount: 0,
total_tax_amount: 1.9,
total_amount: 11.9
}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Reporting/v1/Transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = "{\"meta\":{\"language_code\":\"en\",\"country_code\":\"de\",\"currency_code\":\"eur\",\"payment_type\":\"cash\",\"invoice_type\":\"debit\",\"reference_invoice_uid\":\"c27485a2ec3d4dc2b53ccf838ac396f9\",\"reference_invoice_number\":\"1\"},\"supplier\":{\"uid\":\"vnnslef7f6aef4ed68d9875ed932jlfrp\",\"tin\":\"de123456789\"},\"customer\":{\"uid\":\"fsopdfafpsfjsldfjslfsmgbmpgpwooir\",\"pin\":\"87654321\",\"tin\":\"cz12345678\"},\"operator\":{\"uid\":\"c27485a2ec3d4dc2b53ccf838ac396f9\",\"pin\":\"001122334\",\"tin\":\"de123456789\"},\"terminal\":{\"uid\":\"292d6e8862ed4e7584d1a602d074aa71\"},\"invoice\":{\"delivery_date\":\"2021-01-15T01:00:00+00:00\",\"items\":[{\"item_number\":1,\"product_name\":\"Delivery service\",\"quantity\":1,\"unit_of_measure\":\"pcs\",\"unit_price\":10,\"tax_rate\":19,\"net_price\":10}],\"total_net_amount\":10,\"discount\":0,\"total_tax_amount\":1.9,\"total_amount\":11.9}}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Reporting/v1/Transactions", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"meta\":{\"language_code\":\"en\",\"country_code\":\"de\",\"currency_code\":\"eur\",\"payment_type\":\"cash\",\"invoice_type\":\"debit\",\"reference_invoice_uid\":\"c27485a2ec3d4dc2b53ccf838ac396f9\",\"reference_invoice_number\":\"1\"},\"supplier\":{\"uid\":\"vnnslef7f6aef4ed68d9875ed932jlfrp\",\"tin\":\"de123456789\"},\"customer\":{\"uid\":\"fsopdfafpsfjsldfjslfsmgbmpgpwooir\",\"pin\":\"87654321\",\"tin\":\"cz12345678\"},\"operator\":{\"uid\":\"c27485a2ec3d4dc2b53ccf838ac396f9\",\"pin\":\"001122334\",\"tin\":\"de123456789\"},\"terminal\":{\"uid\":\"292d6e8862ed4e7584d1a602d074aa71\"},\"invoice\":{\"delivery_date\":\"2021-01-15T01:00:00+00:00\",\"items\":[{\"item_number\":1,\"product_name\":\"Delivery service\",\"quantity\":1,\"unit_of_measure\":\"pcs\",\"unit_price\":10,\"tax_rate\":19,\"net_price\":10}],\"total_net_amount\":10,\"discount\":0,\"total_tax_amount\":1.9,\"total_amount\":11.9}}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Reporting/v1/Transactions"
payload = {
"meta": {
"language_code": "en",
"country_code": "de",
"currency_code": "eur",
"payment_type": "cash",
"invoice_type": "debit",
"reference_invoice_uid": "c27485a2ec3d4dc2b53ccf838ac396f9",
"reference_invoice_number": "1"
},
"supplier": {
"uid": "vnnslef7f6aef4ed68d9875ed932jlfrp",
"tin": "de123456789"
},
"customer": {
"uid": "fsopdfafpsfjsldfjslfsmgbmpgpwooir",
"pin": "87654321",
"tin": "cz12345678"
},
"operator": {
"uid": "c27485a2ec3d4dc2b53ccf838ac396f9",
"pin": "001122334",
"tin": "de123456789"
},
"terminal": {"uid": "292d6e8862ed4e7584d1a602d074aa71"},
"invoice": {
"delivery_date": "2021-01-15T01:00:00+00:00",
"items": [
{
"item_number": 1,
"product_name": "Delivery service",
"quantity": 1,
"unit_of_measure": "pcs",
"unit_price": 10,
"tax_rate": 19,
"net_price": 10
}
],
"total_net_amount": 10,
"discount": 0,
"total_tax_amount": 1.9,
"total_amount": 11.9
}
}
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoa.com/Reporting/v1/Transactions/id \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.com/Reporting/v1/Transactions/id';
let options = {method: 'GET', headers: {Accept: 'application/json'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error('error:' + err));
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api-demo.fonoa.com/Reporting/v1/Transactions/id")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoa.com/Reporting/v1/Transactions/id", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoa.com/Reporting/v1/Transactions/id"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
{
"id":"c27485a2ec3d4dc2b53ccf838ac396f9"
"statusQueryGetUri":"https://api.fonoatech.com/Onboarding/v1/Companies/c27485a2ec3d4dc2b53ccf838ac396f9"
}
{
"id": "478dbf7f6aef4ed68d9875ed932a3545"
"status": "Completed"
"message": NULL
"company_name": "ABC Updated Co."
"tin": "HR63433918405"
"has_valid_tin": true
"company_number": "ABC1234567890"
"vat_number": "VAT1111111"
"company_in_vat_regime": true
"email": "office@abc.com"
"website": "www.abc.com"
"representative_name": "Some rep name"
"representative_email": "some@email.com"
"country_code": "hr"
"province": "Province"
"city": "City"
"postal_code": "12345"
"street": "Some street name"
"number": "75"
"ta_certificate_verified": true
"ta_certificate_issuer": "certificate issuer info"
"ta_certificate_owner": "certificate owner info"
"ta_certificate_valid_from": "2018-10-28T10:24:28.2676206+00:00"
"ta_certificate_valid_to": "2020-10-28T10:24:28.2676206+00:00"
"created": "2020-10-28T10:24:28.2676206+00:00"
}
{
"id":"c27485a2ec3d4dc2b53ccf838ac396f9"
"statusQueryGetUri":"https://api.fonoatech.com/Reporting/v1/Transactions/c27485a2ec3d4dc2b53ccf838ac396f9"
}
{
"id": "478dbf7f6aef4ed68d9875ed932a3545"
"status": "Completed"
"message": NULL
"country_code": "cz"
"currency_code": "EUR"
"payment_type": "cash"
"invoice_type": "credit"
"reference_invoice_uid": "uniqueidentifierforaninvoice"
"reference_invoice_number": "000000050"
"supplier_uid": "supplieruniqueidentifier"
"customer_uid": "customeruniqueidentifier"
"operator_uid": "operatoruniqueidentifier"
"terminal_uid": "terminaluniqueidentifier"
"invoice_number": "invoicenumber"
"delivery_date": "2020-10-28T11:53:57+00:00"
"items":[
0:{
"item_number": 1
"product_name": "Product description"
"quantity": 1
"unit_of_measure": "item"
"unit_price": -100
"tax_rate": 0
"net_price": -100
}
]
"total_net_amount": -100
"discount": 0
"total_tax_amount": 0
"total_amount": -100
"raw_request": "base64encoded request sent to tax authority (most probably a signed XML)"
"raw_response": "base64encoded response from tax authority (most probably a signed XML)"
"created": "2020-10-28T10:24:28.2676206+00:00"
}
Sensitive data encrypted and safely stored.
User credentials hashed to ensure the privacy of the highest standard.
Data at rest and in transit encrypted, communication only via secure protocols.
Regular vulnerability assessments conducted by internal and external experts.
Host, Network, Web Application and Database Assessment, Penetration Testing, and other best practices applied in our everyday security work.
SOC 2 Type 1 for Service Organizations.
ISO security certification 27001 and 27017.
ISO/IEC data management policies.
GDPR compliant.
With our per-API-call pricing model, we make sure that you never pay any overhead for using our tax automation products.
Get in touchSchedule a demo to test our products, or just create an account and start automating taxes. You can also contact us to discuss any specifics around your business.
Know the tax status of suppliers or buyers by instantly validating tax numbers through a simple integration and dashboard. With Lookup you can:
✓ Validate tax ID’s upon checkout to apply the right tax
✓ Validate tax IDs in batch for tax audits and periodic checks
✓ Validate tax IDs one-by-one for sanity checks
Governments want to collect taxes based on where a service is consumed - not where the service provider is located. Confirming the status of your customer is in many cases essential for determining where and how much tax to apply on a transaction.
✓ Effortlessly validate tax numbers one-by-one or in a batch, through an easy-to-use user interface.
✓ Access your validation history and easily comply with audit requests.
Using Lookup Lite, you can seamlessly validate your customers’ and suppliers’ VAT identification numbers to understand their taxpayer status through an easy-to-use graphic interface.
Fonoa allows Uber to be able to validate taxpayer status both in VIES, and in the national databases across the EU, allowing us to have a complete picture over the taxpayer status of our supplier base.
Fonoa’s Lookup allows Zoom to validate Tax ID Numbers across the globe and translates taxpayer details across different jurisdictions.
Fonoa allows Uber to be able to validate taxpayer status both in VIES, and in the national databases across the EU, allowing us to have a complete picture over the taxpayer status of our supplier base.