Automatically determine and calculate a tax rate and amount to apply to your sales transactions across the world.
Automatically determine and calculate a tax rate and amount to apply to your sales transactions across the world.
Keeping up with manual tax calculations and tracking of changes to sales tax, VAT or GST laws across the world is hard.
With you customers and sellers located in a growing number regions or countries, understanding what taxes you need to charge and remit in each country is hard.
Determining the correct tax rate depends on multiple ever changing variables: customer’s location, B2B/B2C nature, type of product/service sold, whether seller has surpassed local revenue thresholds making it liable to charge local tax, and many more.
When B2C merchants selling globally do not add sales tax, VAT or GST based on customers’ country and revenue threshold, they risk fines from local tax authorities.
Know when and if your customers / sellers are taxable
Know when and where you need to register and charge local taxes
Know what tax rates you need to apply to your transactions
Avoid not adding the correct amount of sales tax, VAT or GST where required
Our API receives data about your customers, sellers and transactions.
Our tax engine takes into account all the relevant inputs and automatically determines whether a transaction is taxable, at what rate, and what is the type of tax that needs to be applied.
Accurate tax rates are automatically assigned to all taxable transactions.
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.fonoatech.com/Lookup/v1/Validations \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"country_iso":"au","tin":"30616935623","check_online":true}'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.com/Lookup/v1/Validations';
let options = {
method: 'POST',
headers: {Accept: 'application/json', 'Content-Type': 'application/json'},
body: JSON.stringify({country_iso: 'au', tin: '30616935623', check_online: 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.fonoatech.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\",\"check_online\":true}"
response = http.request(request)
puts response.read_body
fetch("https://api-demo.fonoatech.com/Lookup/v1/Validations", {
"method": "POST",
"headers": {
"Accept": "application/json",
"Content-Type": "application/json"
},
"body": "{\"country_iso\":\"au\",\"tin\":\"30616935623\",\"check_online\":true}"
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoatech.com/Lookup/v1/Validations"
payload = {
"country_iso": "au",
"tin": "30616935623",
"check_online": 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.fonoatech.com/Lookup/v1/Validations/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.com/Lookup/v1/Validations/"
headers = {"Accept": "application/json"}
response = requests.request("GET", url, headers=headers)
print(response.text)
curl --request GET \
--url https://api-demo.fonoatech.com/Lookup/v1/Validations/ServiceStatuses \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.com/Lookup/v1/Validations/ServiceStatuses';
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.fonoatech.com/Lookup/v1/Validations/ServiceStatuses")
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.fonoatech.com/Lookup/v1/Validations/ServiceStatuses", {
"method": "GET",
"headers": {
"Accept": "application/json"
}
})
.then(response => {
console.log(response);
})
.catch(err => {
console.error(err);
});
import requests
url = "https://api-demo.fonoatech.com/Lookup/v1/Validations/ServiceStatuses"
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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.com/Tax/v1/RevenueChecks/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.com/Tax/v1/Calculations/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.com/Invoicing/v1/Invoices/ \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.com/Onboarding/v1/Companies/id \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.com/Reporting/v1/Transactions/id \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoatech.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.fonoatech.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.fonoatech.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.fonoatech.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.
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.