Listar solicitudes de una orden
curl --request GET \
--url https://api.example.com/api/v1/external/fiscal/numberingimport requests
url = "https://api.example.com/api/v1/external/fiscal/numbering"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/external/fiscal/numbering', 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.example.com/api/v1/external/fiscal/numbering",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/external/fiscal/numbering"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/external/fiscal/numbering")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/external/fiscal/numbering")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"items": [
{
"fiscalRequestId": "9afef543-56ce-4911-a92e-5908366fa980",
"orderCode": "EC-K004-42-1786579046934",
"countryCode": "EC",
"requestStatus": "GENERATED",
"documentStatus": "AUTHORIZED",
"document": {
"documentType": "SALE_INVOICE",
"documentNumber": "005-004-000000045"
},
"failure": null
},
{
"fiscalRequestId": "c1d9e0a2-77b4-4f10-9f3e-2b0c5d6a1e88",
"orderCode": "EC-K004-42-1786579046934",
"countryCode": "EC",
"requestStatus": "GENERATED",
"documentStatus": "AUTHORIZED",
"document": {
"documentType": "CREDIT_NOTE",
"documentNumber": "005-004-000000046",
"compensates": { "documentNumber": "005-004-000000045" }
},
"failure": null
}
]
}
}
{
"success": true,
"data": { "items": [] }
}
API
Listar solicitudes de una orden
Busca solicitudes de numeración por código de orden, clave de acceso o estado. Una orden puede tener más de un documento.
GET
/
api
/
v1
/
external
/
fiscal
/
numbering
Listar solicitudes de una orden
curl --request GET \
--url https://api.example.com/api/v1/external/fiscal/numberingimport requests
url = "https://api.example.com/api/v1/external/fiscal/numbering"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/external/fiscal/numbering', 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.example.com/api/v1/external/fiscal/numbering",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/external/fiscal/numbering"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/external/fiscal/numbering")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/external/fiscal/numbering")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"items": [
{
"fiscalRequestId": "9afef543-56ce-4911-a92e-5908366fa980",
"orderCode": "EC-K004-42-1786579046934",
"countryCode": "EC",
"requestStatus": "GENERATED",
"documentStatus": "AUTHORIZED",
"document": {
"documentType": "SALE_INVOICE",
"documentNumber": "005-004-000000045"
},
"failure": null
},
{
"fiscalRequestId": "c1d9e0a2-77b4-4f10-9f3e-2b0c5d6a1e88",
"orderCode": "EC-K004-42-1786579046934",
"countryCode": "EC",
"requestStatus": "GENERATED",
"documentStatus": "AUTHORIZED",
"document": {
"documentType": "CREDIT_NOTE",
"documentNumber": "005-004-000000046",
"compensates": { "documentNumber": "005-004-000000045" }
},
"failure": null
}
]
}
}
{
"success": true,
"data": { "items": [] }
}
Devuelve
El tenant sale de la clave. Solo ves solicitudes de tu propia cuenta.
items[] con el mismo contrato que
POST /numbering, uno por solicitud.
Es un arreglo y no un objeto por una razón concreta: una orden puede tener dos
documentos — la factura y la anulación que la compensa. Si asumís uno solo, el
día que se anule una venta vas a leer el documento equivocado.
Este es el que usás cuando perdiste la respuesta. El
orderCode es lo único
que tenés seguro en la mano: lo elegiste vos antes de numerar. El
fiscalRequestId te lo devolvimos nosotros, así que si se cortó la red no lo
tenés.Autenticación
| Header | x-api-key: pk_live_… |
| Scope | fiscal:write |
Parámetros de consulta
string
El código de orden con el que se numeró. Es el filtro que vas a usar el 99% de
las veces.
string
Clave de acceso del ente (
claveAcceso en Ecuador). Sirve para el camino
inverso: tenés el número impreso en un ticket y querés saber de qué orden salió.string
Filtra por cómo terminó el acto de numerar. Uno de:
REQUESTED, GENERATED,
PENDING, FAILED_RETRYABLE, FAILED_FINAL, UNAVAILABLE.string
Filtra por el veredicto del ente. Uno de:
PENDING, AUTHORIZED, REJECTED,
CANCELLED.integer
predeterminado:"1"
Página, arrancando en 1.
integer
predeterminado:"20"
Resultados por página. Entre 1 y 100.
Para conciliar no filtres por
documentStatus. Una venta cuya numeración
falló nunca llega a tener veredicto del ente, así que filtrar por
AUTHORIZED la deja afuera del reporte — y es justamente la que hay que mirar.
Filtrá por orderCode y ramificá en tu lado por requestStatus.Respuesta
{
"success": true,
"data": {
"items": [
{
"fiscalRequestId": "9afef543-56ce-4911-a92e-5908366fa980",
"orderCode": "EC-K004-42-1786579046934",
"countryCode": "EC",
"requestStatus": "GENERATED",
"documentStatus": "AUTHORIZED",
"document": {
"documentType": "SALE_INVOICE",
"documentNumber": "005-004-000000045"
},
"failure": null
},
{
"fiscalRequestId": "c1d9e0a2-77b4-4f10-9f3e-2b0c5d6a1e88",
"orderCode": "EC-K004-42-1786579046934",
"countryCode": "EC",
"requestStatus": "GENERATED",
"documentStatus": "AUTHORIZED",
"document": {
"documentType": "CREDIT_NOTE",
"documentNumber": "005-004-000000046",
"compensates": { "documentNumber": "005-004-000000045" }
},
"failure": null
}
]
}
}
{
"success": true,
"data": { "items": [] }
}
Una orden que no se numeró devuelve
items: [], no un 404. No es un error:
es la respuesta correcta a “¿qué documentos tiene esta orden?” cuando no tiene
ninguno.Errores
| Código | Cuándo |
|---|---|
400 | Ningún filtro utilizable, o un valor fuera del enum |
401 | La API key falta, no existe o está revocada |
403 | La key no tiene el scope fiscal:write |
Relacionado
- Solicitar numeración fiscal — el
POSTque la crea - Consultar una solicitud — cuando tenés el
fiscalRequestId - Guía de integración fiscal — el flujo completo de punta a punta

