Request Reverse Issuance
The sum of all item amounts becomes the issuance amount. Provide each item’s tax (tax) according to taxType.
The amount calculation is the same as for standard issuance. See the Issuance amount guide and Email-approval reverse issuance | Simple-approval reverse issuance.
Bolta removes invisible characters from the request text but keeps tabs, line feeds, and carriage returns. Bolta rejects supplementary characters above U+FFFF, such as emoji, with 400. See Unsupported characters.
curl --request POST \
--url https://xapi.bolta.io/v1/taxInvoices/issueRequest \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": null,
"organizationName": "Supplier Company",
"representativeName": "Supplier Representative",
"address": null,
"businessItem": "Software",
"businessType": "Service",
"manager": {
"email": "supplier@example.com",
"name": "Supplier Manager",
"telephone": null
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": null,
"organizationName": "Recipient Company",
"representativeName": "Recipient Representative",
"address": null,
"businessItem": null,
"businessType": null,
"managers": [
{
"email": "recipient@example.com",
"name": "Recipient Manager",
"telephone": null
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "Zero-rate item",
"unitPrice": null,
"quantity": null,
"supplyCost": 100000,
"tax": 0,
"specification": null,
"description": null
}
],
"description": null
}
'import requests
url = "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload = {
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": None,
"organizationName": "Supplier Company",
"representativeName": "Supplier Representative",
"address": None,
"businessItem": "Software",
"businessType": "Service",
"manager": {
"email": "supplier@example.com",
"name": "Supplier Manager",
"telephone": None
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": None,
"organizationName": "Recipient Company",
"representativeName": "Recipient Representative",
"address": None,
"businessItem": None,
"businessType": None,
"managers": [
{
"email": "recipient@example.com",
"name": "Recipient Manager",
"telephone": None
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "Zero-rate item",
"unitPrice": None,
"quantity": None,
"supplyCost": 100000,
"tax": 0,
"specification": None,
"description": None
}
],
"description": None
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date: '2026-05-27',
purpose: 'CLAIM',
taxType: 'ZERO_RATE',
supplier: {
identificationNumber: '1234567890',
taxRegistrationId: null,
organizationName: 'Supplier Company',
representativeName: 'Supplier Representative',
address: null,
businessItem: 'Software',
businessType: 'Service',
manager: {email: 'supplier@example.com', name: 'Supplier Manager', telephone: null}
},
supplied: {
identificationNumber: '0987654321',
taxRegistrationId: null,
organizationName: 'Recipient Company',
representativeName: 'Recipient Representative',
address: null,
businessItem: null,
businessType: null,
managers: [{email: 'recipient@example.com', name: 'Recipient Manager', telephone: null}]
},
items: [
{
date: '2026-05-27',
name: 'Zero-rate item',
unitPrice: null,
quantity: null,
supplyCost: 100000,
tax: 0,
specification: null,
description: null
}
],
description: null
})
};
fetch('https://xapi.bolta.io/v1/taxInvoices/issueRequest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://xapi.bolta.io/v1/taxInvoices/issueRequest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'date' => '2026-05-27',
'purpose' => 'CLAIM',
'taxType' => 'ZERO_RATE',
'supplier' => [
'identificationNumber' => '1234567890',
'taxRegistrationId' => null,
'organizationName' => 'Supplier Company',
'representativeName' => 'Supplier Representative',
'address' => null,
'businessItem' => 'Software',
'businessType' => 'Service',
'manager' => [
'email' => 'supplier@example.com',
'name' => 'Supplier Manager',
'telephone' => null
]
],
'supplied' => [
'identificationNumber' => '0987654321',
'taxRegistrationId' => null,
'organizationName' => 'Recipient Company',
'representativeName' => 'Recipient Representative',
'address' => null,
'businessItem' => null,
'businessType' => null,
'managers' => [
[
'email' => 'recipient@example.com',
'name' => 'Recipient Manager',
'telephone' => null
]
]
],
'items' => [
[
'date' => '2026-05-27',
'name' => 'Zero-rate item',
'unitPrice' => null,
'quantity' => null,
'supplyCost' => 100000,
'tax' => 0,
'specification' => null,
'description' => null
]
],
'description' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload := strings.NewReader("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Supplier Company\",\n \"representativeName\": \"Supplier Representative\",\n \"address\": null,\n \"businessItem\": \"Software\",\n \"businessType\": \"Service\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"Supplier Manager\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Recipient Company\",\n \"representativeName\": \"Recipient Representative\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"Recipient Manager\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"Zero-rate item\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Supplier Company\",\n \"representativeName\": \"Supplier Representative\",\n \"address\": null,\n \"businessItem\": \"Software\",\n \"businessType\": \"Service\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"Supplier Manager\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Recipient Company\",\n \"representativeName\": \"Recipient Representative\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"Recipient Manager\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"Zero-rate item\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Supplier Company\",\n \"representativeName\": \"Supplier Representative\",\n \"address\": null,\n \"businessItem\": \"Software\",\n \"businessType\": \"Service\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"Supplier Manager\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Recipient Company\",\n \"representativeName\": \"Recipient Representative\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"Recipient Manager\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"Zero-rate item\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}"
response = http.request(request)
puts response.read_body{
"issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}Authorizations
Base64-encode your API key and pass it. Enter the API key as the username and leave the password empty.
Headers
Client reference ID for a tax invoice request. This header is optional. Enter a non-blank value between 1 and 255 characters. After this value is used with a tax invoice issuance API, the same API key cannot reuse it, regardless of the request content or endpoint. A duplicate returns 400 Bad Request with INVALID_REQUEST. If you do not receive a response, do not resend the request. Check the accepted request with the request status API.
1 - 255\SBody
Write date
"2024-08-24"
RECEIPT: receipt, CLAIM: claim
RECEIPT, CLAIM TAXABLE: taxable (e-tax invoice), ZERO_RATE: zero-rate (e-tax invoice), TAX_FREE: tax-exempt (invoice). For TAXABLE the item tax cannot be null; for ZERO_RATE every item's tax must be 0. For TAX_FREE every item's tax must be null or omitted.
TAXABLE, ZERO_RATE, TAX_FREE "TAXABLE"
"ZERO_RATE"
"TAX_FREE"
Supplier
Show child attributes
Show child attributes
Supplied party
Show child attributes
Show child attributes
Items
1 - 16 elementsShow child attributes
Show child attributes
Brokered reverse issuance is not supported. Omit this field or set it to null.
Tax invoice note
1 - 150Response
An identifier for the issuance request. Note that the format and length may change.
"8D529FAD3EBAE050B79CE943CCC7CEDE"
curl --request POST \
--url https://xapi.bolta.io/v1/taxInvoices/issueRequest \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": null,
"organizationName": "Supplier Company",
"representativeName": "Supplier Representative",
"address": null,
"businessItem": "Software",
"businessType": "Service",
"manager": {
"email": "supplier@example.com",
"name": "Supplier Manager",
"telephone": null
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": null,
"organizationName": "Recipient Company",
"representativeName": "Recipient Representative",
"address": null,
"businessItem": null,
"businessType": null,
"managers": [
{
"email": "recipient@example.com",
"name": "Recipient Manager",
"telephone": null
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "Zero-rate item",
"unitPrice": null,
"quantity": null,
"supplyCost": 100000,
"tax": 0,
"specification": null,
"description": null
}
],
"description": null
}
'import requests
url = "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload = {
"date": "2026-05-27",
"purpose": "CLAIM",
"taxType": "ZERO_RATE",
"supplier": {
"identificationNumber": "1234567890",
"taxRegistrationId": None,
"organizationName": "Supplier Company",
"representativeName": "Supplier Representative",
"address": None,
"businessItem": "Software",
"businessType": "Service",
"manager": {
"email": "supplier@example.com",
"name": "Supplier Manager",
"telephone": None
}
},
"supplied": {
"identificationNumber": "0987654321",
"taxRegistrationId": None,
"organizationName": "Recipient Company",
"representativeName": "Recipient Representative",
"address": None,
"businessItem": None,
"businessType": None,
"managers": [
{
"email": "recipient@example.com",
"name": "Recipient Manager",
"telephone": None
}
]
},
"items": [
{
"date": "2026-05-27",
"name": "Zero-rate item",
"unitPrice": None,
"quantity": None,
"supplyCost": 100000,
"tax": 0,
"specification": None,
"description": None
}
],
"description": None
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
date: '2026-05-27',
purpose: 'CLAIM',
taxType: 'ZERO_RATE',
supplier: {
identificationNumber: '1234567890',
taxRegistrationId: null,
organizationName: 'Supplier Company',
representativeName: 'Supplier Representative',
address: null,
businessItem: 'Software',
businessType: 'Service',
manager: {email: 'supplier@example.com', name: 'Supplier Manager', telephone: null}
},
supplied: {
identificationNumber: '0987654321',
taxRegistrationId: null,
organizationName: 'Recipient Company',
representativeName: 'Recipient Representative',
address: null,
businessItem: null,
businessType: null,
managers: [{email: 'recipient@example.com', name: 'Recipient Manager', telephone: null}]
},
items: [
{
date: '2026-05-27',
name: 'Zero-rate item',
unitPrice: null,
quantity: null,
supplyCost: 100000,
tax: 0,
specification: null,
description: null
}
],
description: null
})
};
fetch('https://xapi.bolta.io/v1/taxInvoices/issueRequest', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://xapi.bolta.io/v1/taxInvoices/issueRequest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'date' => '2026-05-27',
'purpose' => 'CLAIM',
'taxType' => 'ZERO_RATE',
'supplier' => [
'identificationNumber' => '1234567890',
'taxRegistrationId' => null,
'organizationName' => 'Supplier Company',
'representativeName' => 'Supplier Representative',
'address' => null,
'businessItem' => 'Software',
'businessType' => 'Service',
'manager' => [
'email' => 'supplier@example.com',
'name' => 'Supplier Manager',
'telephone' => null
]
],
'supplied' => [
'identificationNumber' => '0987654321',
'taxRegistrationId' => null,
'organizationName' => 'Recipient Company',
'representativeName' => 'Recipient Representative',
'address' => null,
'businessItem' => null,
'businessType' => null,
'managers' => [
[
'email' => 'recipient@example.com',
'name' => 'Recipient Manager',
'telephone' => null
]
]
],
'items' => [
[
'date' => '2026-05-27',
'name' => 'Zero-rate item',
'unitPrice' => null,
'quantity' => null,
'supplyCost' => 100000,
'tax' => 0,
'specification' => null,
'description' => null
]
],
'description' => null
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://xapi.bolta.io/v1/taxInvoices/issueRequest"
payload := strings.NewReader("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Supplier Company\",\n \"representativeName\": \"Supplier Representative\",\n \"address\": null,\n \"businessItem\": \"Software\",\n \"businessType\": \"Service\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"Supplier Manager\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Recipient Company\",\n \"representativeName\": \"Recipient Representative\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"Recipient Manager\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"Zero-rate item\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Supplier Company\",\n \"representativeName\": \"Supplier Representative\",\n \"address\": null,\n \"businessItem\": \"Software\",\n \"businessType\": \"Service\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"Supplier Manager\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Recipient Company\",\n \"representativeName\": \"Recipient Representative\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"Recipient Manager\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"Zero-rate item\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://xapi.bolta.io/v1/taxInvoices/issueRequest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"date\": \"2026-05-27\",\n \"purpose\": \"CLAIM\",\n \"taxType\": \"ZERO_RATE\",\n \"supplier\": {\n \"identificationNumber\": \"1234567890\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Supplier Company\",\n \"representativeName\": \"Supplier Representative\",\n \"address\": null,\n \"businessItem\": \"Software\",\n \"businessType\": \"Service\",\n \"manager\": {\n \"email\": \"supplier@example.com\",\n \"name\": \"Supplier Manager\",\n \"telephone\": null\n }\n },\n \"supplied\": {\n \"identificationNumber\": \"0987654321\",\n \"taxRegistrationId\": null,\n \"organizationName\": \"Recipient Company\",\n \"representativeName\": \"Recipient Representative\",\n \"address\": null,\n \"businessItem\": null,\n \"businessType\": null,\n \"managers\": [\n {\n \"email\": \"recipient@example.com\",\n \"name\": \"Recipient Manager\",\n \"telephone\": null\n }\n ]\n },\n \"items\": [\n {\n \"date\": \"2026-05-27\",\n \"name\": \"Zero-rate item\",\n \"unitPrice\": null,\n \"quantity\": null,\n \"supplyCost\": 100000,\n \"tax\": 0,\n \"specification\": null,\n \"description\": null\n }\n ],\n \"description\": null\n}"
response = http.request(request)
puts response.read_body{
"issuanceKey": "8D529FAD3EBAE050B79CE943CCC7CEDE"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}{
"code": "<string>",
"message": "<string>",
"traceId": "<string>"
}