Multi-tenant nativo
Aislamiento por Row-Level Security de Postgres. Un cliente no ve datos de otro, ni por bug.
API REST, SDKs, sandbox y webhooks. Emite facturas y boletas SUNAT en minutos, sin tocar UBL ni SOAP.
100 documentos gratis al mes · Sin tarjeta · Cumple SUNAT
curl -X POST https://api.fiscal-web.pe/v1/documents \
-H "Authorization: Bearer fwk_test_…" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"kind": "invoice",
"series": "F001",
"receiver": {
"id_kind": "ruc",
"id_value": "20512333797",
"name": "ACME SAC"
},
"items": [
{
"description": "Servicio profesional",
"quantity": "1",
"unit_price": "100.00"
}
]
}'100
docs gratis al mes
S/ 0.10
por documento
≤ 5 min
al primer hello world
99.9%
uptime histórico
Construido para developers que no quieren tocar XML. RLS, sandbox, webhooks firmados y SDKs tipados — listos desde el primer POST.
Aislamiento por Row-Level Security de Postgres. Un cliente no ve datos de otro, ni por bug.
El mismo API contra SUNAT homologación. Sin consumir cuota, sin tarjeta.
HMAC-SHA256 por endpoint. Reintentos automáticos con backoff. Replay desde el dashboard.
Tu .pfx y SOL se cifran con AES-GCM y una DEK única por tenant. Nunca los vemos en plano.
Node, Python, PHP listos. Java, Go, .NET en camino. Tipos estrictos generados desde OpenAPI.
Cada request guardada 30 días con request/response. Replay con un clic desde el dashboard.
Pensado para que el primer documento salga antes que tu café se enfríe.
Sin tarjeta. Sin email de verificación obligatorio para sandbox.
# Crea cuenta y genera tu primera key
$ open https://fiscal-web.pe/register
# La key 'fwk_test_…' aparece UNA vez en el dashboard.Se cifra antes de tocar disco. Una sola vez por tenant.
curl -F "[email protected];type=application/x-pkcs12" \
-F "password=$SOL_PASS" \
-H "Authorization: Bearer fwk_test_…" \
https://api.fiscal-web.pe/v1/credentialsRecibes el CDR firmado de SUNAT por webhook en segundos.
curl -X POST https://api.fiscal-web.pe/v1/documents \
-H "Authorization: Bearer fwk_test_…" \
-d @factura.json
# < 201 Created { "id": "01ARZ3…", "state": "pending" }
# … 4s después, por webhook:
# < { "event": "document.accepted", "cdr": { ... } }SDKs oficiales en Node, Python y PHP. Copia, pega y emite.
curl -X POST https://api.fiscal-web.pe/v1/documents \
-H "Authorization: Bearer fwk_live_…" \
-H "Idempotency-Key: ${UUID}" \
-d '{
"kind": "invoice",
"series": "F001",
"receiver": { "id_kind": "ruc", "id_value": "20512333797" },
"items": [{ "description": "Servicio", "quantity": "1", "unit_price": "100.00" }]
}'import { FiscalWeb } from "fiscal-web";
const fw = new FiscalWeb({ apiKey: process.env.FISCAL_WEB_KEY });
const doc = await fw.documents.create({
kind: "invoice",
series: "F001",
receiver: { idKind: "ruc", idValue: "20512333797" },
items: [{ description: "Servicio", quantity: "1", unitPrice: "100.00" }],
});
console.log(doc.id, doc.state);from fiscal_web import FiscalWeb
fw = FiscalWeb(api_key=os.environ["FISCAL_WEB_KEY"])
doc = fw.documents.create(
kind="invoice",
series="F001",
receiver={"id_kind": "ruc", "id_value": "20512333797"},
items=[{"description": "Servicio", "quantity": "1", "unit_price": "100.00"}],
)
print(doc.id, doc.state)<?php
use FiscalWeb\Client;
$fw = new Client(getenv("FISCAL_WEB_KEY"));
$doc = $fw->documents->create([
"kind" => "invoice",
"series" => "F001",
"receiver" => ["id_kind" => "ruc", "id_value" => "20512333797"],
"items" => [["description" => "Servicio", "quantity" => "1", "unit_price" => "100.00"]],
]);
echo $doc->id . " " . $doc->state . PHP_EOL;Estudios, certificados, SOAP, retries. Las cosas que no generan ingresos para tu equipo.
Sin tarjeta para empezar. Sin compromiso. Cancelas cuando quieras.
Hasta 100 documentos al mes. Sandbox ilimitado.
Crear cuentaSin mínimos, sin contratos. Pagas lo que emites.
Crear cuentaDesde 5,000 docs/mes. Descuento automático en factura.
Crear cuentaDocumentos al mes
500
Costo estimado
S/ 40.00
Pay-as-you-goVolúmenes >100K docs/mes, SLA 99.95%, integraciones dedicadas y soporte por chat privado.