Árbol del API · Facturas y cobranza › invoicesConnection
Lista de facturas
invoicesConnection
Tipo
Query
Devuelve
Permiso de la llave
Facturación
Página
20 por omisión · máx. 100
Lista las facturas de la empresa con su cliente, su total y su saldo por cobrar. Filtra por cliente, estatus, fecha de emisión o texto, pide sólo las que tienen saldo pendiente y recorre el resultado por páginas con cursores.
Úsala para llevar la cartera a tu sistema: con customerId y
onlyPending: true tienes lo que un cliente debe, y con from y to, lo
emitido en un periodo. Para el XML o el PDF de una factura usa
invoice(id:).
La lista trae también las notas de crédito de la empresa, que llegan con el
mismo tipo y sólo se distinguen por la serie de su folio. Una factura sin
cuenta por cobrar llega con balance, paid y dueDate en null; una
factura vencida es la que tiene dueDate en el pasado y balance mayor que
cero.
La llave ve las facturas de toda la empresa del subdominio, sin importar quién las emitió.
invoicesConnection( first: Int after: String customerId: ID onlyPending: Boolean status: [InvoiceStatus!] from: Date to: Date search: String ): InvoiceConnection!
Argumentos
8
| Argumento | Tipo | Descripción |
|---|---|---|
| Paginación | ||
firstInt |
Int | Cuántas facturas devolver desde el inicio o desde |
afterString |
String | Cursor de la página anterior ( |
| Filtros | ||
customerIdID |
ID | Sólo las facturas de este cliente. |
onlyPendingBoolean |
Boolean | Con |
status[InvoiceStatus!] |
[InvoiceStatus!] | Uno o varios estatus; basta con que la factura tenga uno de ellos. Una lista vacía no trae ninguna factura. |
fromDate |
Date | Emitidas desde este día, inclusive ( |
toDate |
Date | Emitidas hasta este día, inclusive. Con Llave API el día se corta en la hora del centro de México. |
searchString |
String | Texto que contiene el folio, el UUID, o el nombre o la clave del cliente, sin distinguir mayúsculas: |
Estatus de una factura
InvoiceStatus
REGISTEREDRegistrada, aún sin timbrarCONFIRMEDConfirmada, en espera de timbrarseINVOICEDTimbrada y vigente; la única a la que se aplican cobrosCANCELLATION_REQUESTEDCancelación solicitada al SAT, en espera de respuestaCANCELLEDCanceladaUNKNOWNSin equivalente, p. ej. una factura sustituida; revisa rawStatusLo que devuelve
InvoiceConnection!
hasNextPageBoolean!Hay más elementos después de esta página.endCursorStringCursor del último elemento; pásalo en after para pedir la página siguiente.hasPreviousPageBoolean!true si pediste esta página con after, es decir, si no es la primera.startCursorStringCursor del primer elemento de esta página.Campos principales de Invoice
| Campo | Tipo | Descripción |
|---|---|---|
idID! |
ID! | Identificador de la factura; úsalo con invoice(id:) y en las aplicaciones de createCollection. |
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. |
issuedAtDateTime |
DateTime | Fecha y hora de emisión de la factura. |
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. |
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. |
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. |
Paginación
first · after
Pide hasta 100 facturas por página junto con pageInfo. Repite la misma consulta pasando endCursor en after mientras hasNextPage sea true. El orden es estable: no se saltan facturas entre páginas. Más sobre paginación.
Página 1
first: 100
endCursor: "WzEs…MTAwXQ"
hasNextPage: truePágina 2
after: "WzEs…MTAwXQ"
endCursor: "WzEs…MjAwXQ"
hasNextPage: truePágina 3
after: "WzEs…MjAwXQ"
endCursor: "WzEs…MjQ3XQ"
hasNextPage: falseLas facturas llegan por su última modificación, de la más antigua a la más reciente. Una factura que se modifica mientras recorres la lista pasa al final y puede llegar otra vez: guárdalas por id. Aplicarle un cobro cambia su saldo, pero no la cambia de lugar.
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 nodes llega vacío y hasNextPage es false.
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. |
argumentLiteralsIncompatible | Un argumento escrito en la consulta no tiene el tipo esperado: una fecha que no es AAAA-MM-DD o un estatus fuera de InvoiceStatus. Si el valor llega en una variable, el error trae extensions.problems y puede no traer code. | Corrige la consulta; reintentar no ayuda. |
VALIDATION | El cursor de after está mal formado o es de otra lista, o first es negativo. | Empieza de nuevo sin after y usa sólo cursores de pageInfo. |
| 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.