Manage your global sales tax, VAT, and GST obligations seamlessly through our API.
Our products help businesses instantly validate tax ID numbers, apply the correct indirect tax treatment to each transaction, issue custom-branded tax invoices in locally compliant languages and formats, report transactions in accordance with local tax laws, and maintain compliance at scale.
Getting started is simple. Connect once to the Fonoa API to access our suite of tax automation products.
As you scale, you can seamlessly add services and onboard additional countries.
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","check_online":true}'
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', 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.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\",\"check_online\":true}"
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\",\"check_online\":true}"
})
.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",
"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.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)
curl --request GET \
--url https://api-demo.fonoa.com/Lookup/v1/Validations/ServiceStatuses \
--header 'Accept: application/json'
const fetch = require('node-fetch');
let url = 'https://api-demo.fonoa.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.fonoa.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.fonoa.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.fonoa.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.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.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.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.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.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"
}
You know your business best. Our flexible and user-friendly tax configurator allows you to adjust default tax engine settings and set up highly specific tax rules tailored to your business.
Contact Sales
We help digital businesses transacting globally scale in a lean, efficient and cost-effective way by automating, centralizing and streamlining their tax management processes.
Whether you operate a marketplace, sell digital content, software, or are a provider of travel and tourism services, we can help.
Fonoa makes taxes simple, automated, borderless, and accessible. We remove the complexities so you can focus on building your core business. With Fonoa, you'll benefit from:
Schedule a demo today.