cURL
curl --request POST \
--url https://api.json.com.pe/api/sunat/xml \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ruc": "ABC789",
"usuario": "ABC789",
"password": "ABC789",
"proveedor": "ABC789",
"tipo_doc": "ABC789",
"serie": "ABC789",
"correlativo": "ABC789"
}
'import requests
url = "https://api.json.com.pe/api/sunat/xml"
payload = {
"ruc": "ABC789",
"usuario": "ABC789",
"password": "ABC789",
"proveedor": "ABC789",
"tipo_doc": "ABC789",
"serie": "ABC789",
"correlativo": "ABC789"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ruc: 'ABC789',
usuario: 'ABC789',
password: 'ABC789',
proveedor: 'ABC789',
tipo_doc: 'ABC789',
serie: 'ABC789',
correlativo: 'ABC789'
})
};
fetch('https://api.json.com.pe/api/sunat/xml', 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://api.json.com.pe/api/sunat/xml",
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([
'ruc' => 'ABC789',
'usuario' => 'ABC789',
'password' => 'ABC789',
'proveedor' => 'ABC789',
'tipo_doc' => 'ABC789',
'serie' => 'ABC789',
'correlativo' => 'ABC789'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.json.com.pe/api/sunat/xml"
payload := strings.NewReader("{\n \"ruc\": \"ABC789\",\n \"usuario\": \"ABC789\",\n \"password\": \"ABC789\",\n \"proveedor\": \"ABC789\",\n \"tipo_doc\": \"ABC789\",\n \"serie\": \"ABC789\",\n \"correlativo\": \"ABC789\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.json.com.pe/api/sunat/xml")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ruc\": \"ABC789\",\n \"usuario\": \"ABC789\",\n \"password\": \"ABC789\",\n \"proveedor\": \"ABC789\",\n \"tipo_doc\": \"ABC789\",\n \"serie\": \"ABC789\",\n \"correlativo\": \"ABC789\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.json.com.pe/api/sunat/xml")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ruc\": \"ABC789\",\n \"usuario\": \"ABC789\",\n \"password\": \"ABC789\",\n \"proveedor\": \"ABC789\",\n \"tipo_doc\": \"ABC789\",\n \"serie\": \"ABC789\",\n \"correlativo\": \"ABC789\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "exito",
"data": {
"pdf_base64": "H0ZAAAbAAUEsDBBQOS92n...jY2MS0wMS1G"
}
}{
"success": false,
"message": "Bad Request"
}API CONSULTA
Descargar XML
Consulta XML por datos de comprobante.
POST
/
sunat
/
xml
cURL
curl --request POST \
--url https://api.json.com.pe/api/sunat/xml \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ruc": "ABC789",
"usuario": "ABC789",
"password": "ABC789",
"proveedor": "ABC789",
"tipo_doc": "ABC789",
"serie": "ABC789",
"correlativo": "ABC789"
}
'import requests
url = "https://api.json.com.pe/api/sunat/xml"
payload = {
"ruc": "ABC789",
"usuario": "ABC789",
"password": "ABC789",
"proveedor": "ABC789",
"tipo_doc": "ABC789",
"serie": "ABC789",
"correlativo": "ABC789"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ruc: 'ABC789',
usuario: 'ABC789',
password: 'ABC789',
proveedor: 'ABC789',
tipo_doc: 'ABC789',
serie: 'ABC789',
correlativo: 'ABC789'
})
};
fetch('https://api.json.com.pe/api/sunat/xml', 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://api.json.com.pe/api/sunat/xml",
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([
'ruc' => 'ABC789',
'usuario' => 'ABC789',
'password' => 'ABC789',
'proveedor' => 'ABC789',
'tipo_doc' => 'ABC789',
'serie' => 'ABC789',
'correlativo' => 'ABC789'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.json.com.pe/api/sunat/xml"
payload := strings.NewReader("{\n \"ruc\": \"ABC789\",\n \"usuario\": \"ABC789\",\n \"password\": \"ABC789\",\n \"proveedor\": \"ABC789\",\n \"tipo_doc\": \"ABC789\",\n \"serie\": \"ABC789\",\n \"correlativo\": \"ABC789\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.json.com.pe/api/sunat/xml")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ruc\": \"ABC789\",\n \"usuario\": \"ABC789\",\n \"password\": \"ABC789\",\n \"proveedor\": \"ABC789\",\n \"tipo_doc\": \"ABC789\",\n \"serie\": \"ABC789\",\n \"correlativo\": \"ABC789\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.json.com.pe/api/sunat/xml")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ruc\": \"ABC789\",\n \"usuario\": \"ABC789\",\n \"password\": \"ABC789\",\n \"proveedor\": \"ABC789\",\n \"tipo_doc\": \"ABC789\",\n \"serie\": \"ABC789\",\n \"correlativo\": \"ABC789\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "exito",
"data": {
"pdf_base64": "H0ZAAAbAAUEsDBBQOS92n...jY2MS0wMS1G"
}
}{
"success": false,
"message": "Bad Request"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Datos necesarios para realizar la consulta.
RUC de la empresa.
Usuario SOL.
Contraseña SOL.
RUC del emisor del comprobante. Si es una venta (comprobante emitido por tu empresa), usa el mismo valor que el campo ruc. Si es una compra (comprobante que te emitió un tercero), indica el RUC de la empresa que te emitió la factura.
Tipo de documento.
Serie del comprobante.
Número correlativo.