Árbol del API · Facturas y cobranza › invoice
Detalle de una factura
invoice
Devuelve una factura por su id, con su saldo y las ligas para descargar el XML del CFDI y su PDF.
Si la llave no tiene el permiso, la respuesta es invoice: null sin error;
una factura que no existe responde NOT_FOUND. Así distingues una llave mal
configurada de un id equivocado.
Descargas
xmlUrl trae el XML del CFDI tal como se timbró y pdfUrl, el PDF con el
formato de la empresa. Las dos llegan sólo si la factura está timbrada, y el
XML pide además el permiso «Consultar XML de Factura» en la llave.
Las ligas están firmadas, vencen a los 10 minutos y no llevan el header
Authorization: descarga el archivo desde tu servidor en cuanto lo pidas,
sin compartir la liga. Al descargar, AdvantaCloud vuelve a revisar que la
llave exista y conserve sus permisos: si la liga venció o la llave perdió el
permiso, responde HTTP 403. Para una liga nueva, vuelve a pedir la factura.
invoice( id: ID! ): InvoiceDetail
Argumentos
1
| Argumento | Tipo | Descripción |
|---|---|---|
idID! |
ID! | Identificador de la factura, el mismo |
Lo que devuelve
InvoiceDetail
Campos principales de InvoiceDetail:
| Campo | Tipo | Descripción |
|---|---|---|
idID! |
ID! | Identificador de la factura. |
folioString |
String | Folio de la factura con su serie, p. ej. FMTY26100154. |
uuidString |
String | Folio fiscal (UUID) del CFDI; null mientras la factura no se timbra. |
statusInvoiceStatus! |
InvoiceStatus! | Estatus de la factura. |
customerCustomer |
Customer | Cliente de la factura. |
currencyString |
String | Clave SAT de la moneda de la factura, p. ej. MXN o USD. |
totalMoney |
Money | Total de la factura. |
paidMoney |
Money | Lo cobrado de la factura (total menos balance); null cuando balance es null. |
balanceMoney |
Money | Saldo por cobrar, en la moneda de la factura. Llega null si la factura no tiene cuenta por cobrar en AdvantaCloud. |
dueDateDate |
Date | Fecha de vencimiento del pago de la factura. No se borra al cobrarse: la factura está vencida si esta fecha ya pasó y balance es mayor que cero. Llega null si la factura no tiene cuenta por cobrar. |
xmlUrlString |
String | Liga para descargar el XML del CFDI timbrado. Está firmada y vence a los 10 minutos. Llega null si la factura no está timbrada. Requiere «Consultar XML de Factura» en la llave; sin él llega null. |
pdfUrlString |
String | Liga para descargar el PDF de la factura, que se genera al descargarlo con el formato de la empresa. Está firmada y vence a los 10 minutos. Llega null si la factura no está timbrada. |
ordersOrderConnection |
OrderConnection | Órdenes de venta incluidas en la factura, de la más antigua a la más reciente. Requiere «Ventas» en la llave; sin él llega null.20 por omisión, hasta 100 por página. |
Permisos
Llave API Integraciones
La llave ve los registros de toda la empresa del subdominio.
Sin el permiso Sin error
La consulta responde sin error, pero el resultado llega null.
Así lo conserva el API para las integraciones que ya lo usan: revisa los permisos de la llave si una lista llega vacía sin razón.
Errores
| Código | Cuándo ocurre | Qué hacer |
|---|---|---|
| HTTP 401 | Falta el header Authorization o la llave no existe en la empresa del subdominio. La respuesta no trae cuerpo. | Revisa la llave y el subdominio. No reintentes. |
NOT_FOUND | No hay una factura con ese id en la empresa. | Revisa el id. |
| HTTP 422 | Falla interna o dato rechazado al guardar. El cuerpo es {"error": …}, sin data. | Si no cambiaste nada, reintenta con espera exponencial. |
Los errores de la consulta llegan con HTTP 200 en errors, con su código en extensions.code. Revisa siempre errors, no sólo el estatus HTTP. Errores y reintentos.