Manage your sales tax, VAT, and GST obligations seamlessly through our API, globally.
Seamlessly validate your customers and / or suppliers TINs to understand whether they are VAT-registered. Fonoa performes validations against both VIES and local government databases in the EU.
We help digital platforms and marketplaces understand whether their customers and suppliers are taxable, determine and calculate what taxes apply to their transactions, automatically generate locally compliant invoices, and report their transactions to tax authorities in real-time or periodically.
Connect once, and get access to a variety of tax automation products around the world.
Seamlessly add services and onboard additional countries as your business scales.
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.
Get in touchWe serve internet businesses transacting globally and looking to scale their operations in a lean and cost-efficient way.
Our products are designed for digital platforms across food delivery, mobility, e-commerce, marketplaces, SaaS, and digital content (music, video, gaming, and more).
For internet businesses around the world, we make taxes simple, automated, borderless, and accessible via our API. We remove the complexities and enable you to focus on building your core business.
Schedule a demo to test our products, or reach out with any questions you may have.