Autenticación
El API de Taxo Facturación autoriza cada requerimiento con cabeceras. No hay sesiones ni tokens que expiren: cada llamada viaja con sus credenciales.
Solicitá tu API key al equipo de Taxo. Tratá la clave como un secreto: guardala en tu gestor de configuración y nunca la publiques en el cliente.
Clave del API
La clave del API identifica a tu aplicación y debe ir en todos los requerimientos:
X-Key: <clave-del-api>
Clave del certificado de firma
Emitir o re-emitir un comprobante requiere además la clave del certificado de firma electrónica, porque el comprobante se firma antes de enviarlo al SRI:
X-Password: <clave-certificado-firma>
Las operaciones de solo lectura —consultar un comprobante, descargar su RIDE o su XML— no necesitan esta cabecera. Así se ve una emisión con ambas cabeceras:
curl -v https://invoice.taxo.ws/invoices/issue \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
-d @factura.json
import requests
cabeceras = {
'x-key': '<clave-del-api>',
'x-password': '<clave-certificado-firma>',
'content-type': 'application/json'}
respuesta = requests.post(
'https://invoice.taxo.ws/invoices/issue',
headers=cabeceras,
json=factura)
using RestSharp;
namespace TaxoClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://invoice.taxo.ws/");
var request = new RestRequest("invoices/issue", Method.POST);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddHeader("X-Password", "<clave-certificado-firma>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", factura, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Idempotencia
La emisión y re-emisión de facturas admiten idempotencia, para reintentar un envío sin duplicar comprobantes. Agregá la cabecera:
Idempotency-key: <clave-de-idempotencia>
La clave se almacena y todos los requerimientos siguientes con la misma clave devuelven la misma respuesta. Debe ser una cadena de 16 a 48 caracteres: un UUID v4 o un nano-id sirven.
Errores de autenticación
| Código | Significado |
|---|---|
401 | La clave del API falta o no está autorizada para esta operación. |
403 | La clave es válida pero no tiene permiso sobre el recurso. |
El catálogo completo está en Errores.