Alegra – Gotchas

Service ID: alegra

Cloud-based invoicing, accounting and POS software popular across Latin America (Mexico, Colombia, Peru, Spain, Dominican Republic, Argentina, Chile and others) for SMBs and entrepreneurs.

⚠️

11 gotchas across 11 resources

These are connector-specific behaviors and limitations to be aware of when integrating.

allbankAccountsAll

Alegra exposes no IBAN, BIC/SWIFT, routing number, currency or balance, so those fields are empty. On create, Alegra requires an opening balance — the connector sets it from the unified balance (or 0) at today's date.

allbillPaymentsAll

A bill payment must be applied to at least one bill — Alegra rejects an unapplied payment.

Bills1 gotcha

allbillsAll

Each bill line is costed against either a catalog item (line_items[].type: expense_item, which sets line.item) or an expense ledger account (expense_account, which sets line.ledger_account); a single bill may mix both. See the Alegra usage guide for details.

Credit Notes1 gotcha

allcreditNotesAll

allocations is not populated — Alegra exposes only the aggregate applied amount, not which invoices a credit note offset. A stamped credit note is immutable; update and delete work only while it is unstamped (open).

allinvoiceItemsAll

The Mexican SAT product key (productKey) has no unified field — set it on create via pass_through and read it back via the Proxy. On create/update only name, description, code, unit_price and type are written; inventory levels, accounts and taxes are managed in Alegra.

Invoices1 gotcha

allinvoicesAll

Invoices are created unstamped (as a draft), so no CFDI folio is consumed. To stamp (timbrar), send pass_through with stamp.generateStamp: true plus the SAT fields (paymentType, cfdiUse, regimeClient); each line's Alegra item must have a SAT productKey. Update and delete work only while the invoice is a draft — a stamped invoice is immutable (void it in Alegra). The CFDI itself (UUID, seals) is not mapped to unified fields; read it via ?raw=true or the Proxy (#11099). See the Alegra usage guide for the full stamping flow.

alljournalEntriesAll

Alegra does not assign a journal entry number (always empty), and journal entries have no created/updated timestamps — so they cannot be sorted by date.

allledgerAccountsAll

Only postable accounts (header: false) can be used on transactions; posting against a header: true grouping node is rejected. Two codes are exposed — code (the company's own account code) and nominal_code (the SAT código agrupador); the SAT code is shared across related accounts, not unique per account. Creating an account requires a parent_account.id, and accounts cannot be deleted (Alegra has no delete-account endpoint).

Payments1 gotcha

allpaymentsAll

A payment must be applied to at least one invoice — Alegra rejects an unapplied payment.

allpurchaseOrdersAll

delivery_date is required on create. Each line is costed against either a catalog item (line_items[].type: expense_item, which sets line.item) or an expense ledger account (expense_account, which sets line.ledger_account); a PO may mix both. See the Alegra usage guide for details.

Quotes1 gotcha

allquotesAll

Each line's Alegra item must have a SAT productKey or creation fails (code 1035, "La clave del producto es requerida"). The customer address is returned as a single preformatted string in billing_address.line1, not the structured object invoices return.