API de facturación electrónica en Panamá: guía de integración (2026)
API de facturación electrónica en Panamá
En Panamá no puedes emitir una factura electrónica válida sin que el SFEP (el sistema de la DGI) la autorice primero. Es un modelo de pre-clearance: tu sistema manda el documento, el gobierno lo valida, y solo entonces existe fiscalmente.
El problema es que la DGI no expone una API pública. Toda la comunicación pasa por intermediarios llamados PACs (Proveedores Autorizados de Comprobantes). Y cada PAC tiene su propia API, su propio formato, su propia documentación.
G-Force Gateway simplifica esto. Es un middleware que recibe JSON, lo convierte a XML firmado y lo enruta al PAC que elijas. Tú nunca tocas XML ni firmas criptográficas. Conteo mantiene la documentación completa de la API en docs.conteo.me.
La cadena completa:
Tu sistema (JSON) → G-Force Gateway → PAC → SFEP (DGI) → autorizacion
↓
Tu sistema ← { cufe, nroAuthorizationProtocol, qr } ←─────────┘
↓
Tu sistema → DownloadPDF → G-Force Gateway → CAFE (PDF en Base64)
Autenticación
Cada petición al Gateway lleva tres capas de credenciales. No es complicado, pero sí es distinto a lo que la mayoría de APIs hacen.
Capa 1: JWT en el header. Un token que G-Force te da cuando te registras como plataforma. Va en el header Authorization. Lo guardas como variable de entorno (GFORCE_JWT).
Capa 2: credenciales de plataforma. Identifican tu aplicación ante G-Force. Son tres campos (GF_Company, GF_Token, Enterprise) que van en el body de cada request. Un solo juego para toda tu app, guardados como variables de entorno.
Capa 3: credenciales del PAC. Identifican al contribuyente específico. Son tres campos más (Company, Token, Id_Pac) que también van en el body. Cada negocio que factura tiene las suyas, emitidas por el PAC durante la afiliación.
Así se ve la estructura base de cualquier request:
curl -X POST \
https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB/{METODO} \
-H "Authorization: $GFORCE_JWT" \
-H "Content-Type: application/json" \
-d '{
"GF_Company": "tu_usuario_gforce",
"GF_Token": "tu_contraseña_gforce",
"Enterprise": "tu_codigo_empresa",
"Id_Pac": "EBI",
"Company": "usuario_contribuyente",
"Token": "contraseña_contribuyente"
}'La guía de autenticación tiene los detalles de cada campo y credenciales de desarrollo para pruebas.
Emitir una factura
El endpoint SendDocument es el núcleo de todo. Le pasas los datos del emisor, receptor y los items con sus tasas de ITBMS, y G-Force se encarga de armar el XML, firmarlo con el certificado del contribuyente y enviarlo al PAC.
curl -X POST \
https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB/SendDocument \
-H "Authorization: $GFORCE_JWT" \
-H "Content-Type: application/json" \
-d '{
"GF_Company": "tu_usuario_gforce",
"GF_Token": "tu_contraseña_gforce",
"Id_Pac": "EBI",
"Enterprise": "tu_codigo_empresa",
"Company": "usuario_pac_contribuyente",
"Token": "contraseña_pac_contribuyente",
"identifierControlShipping": "orden-001",
"environment": "2",
"document": {
"codeBranchIssuer": "0000",
"dataTransaction": {
"typeEmission": "01",
"typeDocument": "01",
"numberDocumentFiscal": "0000000001",
"pointBillingFiscal": "001",
"dateBroadcast": "2026-04-13T10:00:00-05:00",
"natureOperation": "01",
"typeOperation": "1",
"destinationOperation": "1",
"formatCAFE": "3",
"deliveryCAFE": "3",
"shippingContainer": "1",
"processGeneration": "1",
"typeSale": "1",
"client": {
"typeClientEB": "02",
"typeTaxpayer": "1",
"numberRUC": "8-730-241",
"digitCheckRUC": "59",
"businessName": "Farmacia Central, S.A.",
"address": "Calle 50, Ciudad de Panama",
"codeLocation": "1-1-1",
"province": "Panama",
"district": "Panama",
"correction": "San Francisco",
"country": "PA"
}
},
"listItems": [{
"description": "Servicio de mantenimiento",
"code": "SRV-001",
"amount": "1.00",
"priceUnit": "150.00",
"priceUnitDiscount": "0.00",
"priceItem": "150.00",
"rateITBMS": "01",
"valueITBMS": "10.50",
"totalValue": "160.50",
"codeGTIN": "0",
"cantGTINCom": "1.00",
"codeGTINInv": "0",
"cantGTINComInv": "1.00"
}],
"totalsSubTotals": {
"totalPriceNet": "150.00",
"totalITBMS": "10.50",
"totalISC": "",
"totalAmountTaxed": "10.50",
"totalInvoice": "160.50",
"totalValueReceived": "160.50",
"timePayment": "1",
"nroItems": "1",
"totalAllItems": "160.50",
"listFormPayment": [{
"formPaymentInvoice": "02",
"valueFeePaid": "160.50"
}]
}
}
}'Si la DGI autoriza el documento, la respuesta viene con el cufe (identificador único de la factura), el qr (URL de verificación) y el nroAuthorizationProtocol:
{
"code": "200",
"result": "procesado",
"message": "El documento se envio correctamente.",
"cufe": "FE0120000249610000000001...",
"qr": "https://dgi-fep.mef.gob.pa/Consultas/FacturasPorQR?chFE=...",
"receptionDateDGI": "2026-04-13T10:00:06-05:00",
"nroAuthorizationProtocol": "1234567890123"
}
Guarda cufe y nroAuthorizationProtocol en tu base de datos. Los vas a necesitar para descargar el CAFE, emitir notas de crédito y consultar el estado del documento.
El campo identifierControlShipping funciona como ID de idempotencia. Si mandas el mismo request con el mismo ID (por ejemplo después de un timeout), G-Force no duplica el documento. Usa el ID de tu orden interna.
La referencia completa de SendDocument con todos los campos está en docs.conteo.me.
Descargar el CAFE
El CAFE (Comprobante Auxiliar de Factura Electrónica) es el PDF oficial que le entregas a tu cliente. No lo generas tú, lo genera el PAC después de que la DGI autoriza la factura. Lo descargas con DownloadPDF usando los identificadores del documento.
curl -X POST \
https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB/DownloadPDF \
-H "Authorization: $GFORCE_JWT" \
-H "Content-Type: application/json" \
-d '{
"GF_Company": "tu_usuario_gforce",
"GF_Token": "tu_contraseña_gforce",
"Id_Pac": "EBI",
"Enterprise": "tu_codigo_empresa",
"Company": "usuario_pac_contribuyente",
"Token": "contraseña_pac_contribuyente",
"Branch": "",
"invoiceId": "",
"documentData": {
"codeBranchIssuing": "0000",
"numberDocumentFiscal": "0000000001",
"pointBillingFiscal": "001",
"serialDevice": "",
"typeDocument": "01",
"typeEmission": "01"
}
}'La respuesta trae el PDF en Base64 dentro del campo document. Decodifícalo, guárdalo y sírvelo a tu cliente. Este PDF incluye el QR verificable, los datos fiscales y el número de autorización. Es el único comprobante legalmente válido.
Referencia completa: DownloadPDF.
Qué más puedes hacer
Además de emitir y descargar, la API tiene endpoints para cubrir todo el ciclo de vida de una factura:
Consultar estado con StatusDocument. Si un request falla por timeout y no sabes si la factura se emitió o no, consúltalo. Pasas los mismos documentData que usaste para emitir y te devuelve el estado actual (Autorizada, Rechazada, etc.).
Anular una factura con CancellationDocument. En Panamá no puedes editar una factura ya emitida. Si hay un error, la anulas y emites una nueva. La anulación pasa por el PAC y queda registrada en el SFEP.
Validar un RUC con ConsultRucDV. Antes de emitir una factura, puedes verificar si el RUC del receptor existe en la DGI y obtener su dígito verificador. Útil para validar en tiempo real cuando el usuario introduce el RUC en tu formulario.
Listar facturas con ListInvoices y ver el detalle de una específica con GetDetailInvoice. Filtras por fecha, RUC, número de documento o CUFE.
Enviar el CAFE por correo con SendMail. El Gateway envía el PDF directamente al correo del cliente. Puedes rastrear si lo abrió con MailTracking.
Consultar folios disponibles con RemainingPages. Cada PAC tiene un sistema de folios. Si se te acaban, las facturas dejan de emitirse.
Entornos
Hay dos URLs base. El campo environment en el body del request también tiene que coincidir.
| Entorno | URL base | Campo environment |
|---|---|---|
| Desarrollo | https://gateway-eb-develop.gforceint.com/api/v1/GFGatewayEB | "2" |
| Producción | https://gateway-eb.gforceint.com/api/v1/GFGatewayEB | "1" |
El sandbox no toca el SFEP real
En desarrollo, las facturas no llegan a la DGI. Puedes probar emisión, anulación y consulta sin generar documentos fiscales reales. Los CAFEs del sandbox llevan sello de agua. Las credenciales de desarrollo están en la guía de autenticación.
ITBMS y códigos de referencia
El SFEP valida las tasas de impuesto y los códigos de documento. Si mandas un código incorrecto, la factura se rechaza. Los que más vas a usar:
| Código rateITBMS | Tasa | Aplica a |
|---|---|---|
| 00 | 0% | Exportaciones y operaciones exentas |
| 01 | 7% | La mayoría de bienes y servicios |
| 02 | 10% | Alcohol y hospedaje |
| 03 | 15% | Tabaco |
ITBMS: no todos los servicios van al 7%
La tasa general es 7%, pero hay excepciones. Servicios exentos (salud, educación, servicios financieros básicos) llevan código 00. Mandar la tasa incorrecta es el error más común en integraciones nuevas.
Tipos de documento, métodos de pago, tipos de cliente y todos los demás códigos están en la referencia Panamá.
Manejo de errores
Cuando algo falla, la respuesta trae un code distinto de "200" y un message legible. Los errores más comunes:
| Situación | Qué hacer |
|---|---|
| RUC del receptor no existe en la DGI | Verifica el RUC con ConsultRucDV antes de emitir. Si el receptor no está registrado, la factura se rechaza. |
| Tasa de ITBMS incorrecta para el tipo de servicio | Revisa la tabla de tasas en la referencia Panamá. El SFEP valida tanto la tasa como el código. |
| Número de documento fiscal repetido | numberDocumentFiscal tiene que ser secuencial y único por punto de facturación. Si lo repites, el SFEP lo rechaza. |
| Timeout sin respuesta | Usa identifierControlShipping como ID de idempotencia. Reenvía el mismo request con el mismo ID y no se duplica el documento. |
| Certificado del contribuyente vencido | No reintentable. El contribuyente tiene que renovar su certificado electrónico antes de poder emitir. |
La guía de errores lista todos los códigos con las acciones recomendadas.
Documentación completa de la API
Endpoints, autenticación, ejemplos en 4 lenguajes y referencia de códigos Panamá en docs.conteo.me
Ir a la documentaciónPreguntas frecuentes
Preguntas frecuentes
- ¿Qué es G-Force Gateway y por qué Conteo lo documenta?
- G-Force Gateway es un middleware que conecta tu sistema con los PACs autorizados en Panamá. Recibe JSON, lo convierte a XML firmado y lo enruta al PAC. Conteo usa G-Force como infraestructura para facturación electrónica en Panamá y mantiene la documentación técnica de la API en docs.conteo.me.
- ¿El CAFE lo genero yo o lo genera el PAC?
- Lo genera el PAC. Después de que la DGI autoriza la factura, descargas el PDF llamando al endpoint DownloadPDF con los identificadores del documento (codeBranchIssuing, numberDocumentFiscal, pointBillingFiscal, typeDocument, typeEmission). Lo recibes en base64. Almacenarlo y servirlo es tu responsabilidad.
- ¿Qué pasa si pierdo la respuesta por un timeout?
- Usa identifierControlShipping como ID de idempotencia. Reenvía el mismo request con el mismo ID y G-Force no duplica el documento. También puedes consultar el estado con StatusDocument usando los identificadores del documento.
- ¿Puedo emitir notas de crédito con la misma API?
- Sí. Usa typeDocument '04' para nota de crédito y '05' para nota de débito. Ambas tienen que referenciar el CUFE de la factura original. El proceso de validación en el SFEP es el mismo.
- ¿Qué necesito antes de emitir en producción?
- Tres cosas: certificado electrónico emitido por una entidad autorizada en Panamá, registro de tu RUC en el SFEP bajo la modalidad PAC, y credenciales de producción (tanto de G-Force como del PAC). El endpoint de producción es gateway-eb.gforceint.com y el campo environment tiene que ser '1'.