quote → cash
EN/FR Contact

Integration·Reference·7 min·Updated 2026-10-05

Bringing in externally produced invoices

Get invoices that were produced elsewhere into Revenue Cloud Billing without pretending the engine made them.

Salesforce docs documented by SalesforceField experience observed on a real orgRecommended pattern what we recommendTo verify unverified

Business requirement

Historical or externally produced invoices have to appear alongside the ones Revenue Cloud generates, so that the customer view and the ledger are complete.

Why it is not trivial

Invoice, InvoiceLine and BillingSchedule are not createable — they are outputs of the engine. Any design that starts with “insert the invoice” is dead on arrival.

Recommended architecture

Two honest options, and the choice is a business decision rather than a technical one. Either reconstruct the upstream records so the engine produces the invoice, or keep external invoices in their own object and bring only the ledger consequence into Salesforce.

Reconstructing gives one consistent invoice model at the cost of inventing orders that never existed. Keeping them separate is truthful but means two places to look.

Salesforce components

Select one to open its detail.

Flow

Billing architecture order → schedule → invoice
PREREQUISITES SOURCE ENGINE OUTPUT drives routes Billing context extended + activated Billing settings context mapping Billing defaults entity, treatments OrderItem with period fields ScheduleGroup BSGEntitiesMapping BillingSchedule never created by hand Invoice draft, then posted InvoiceLine TaxCode stays empty Ledger rule insert-only criteria

Scroll the diagram sideways

Every box on the top row is a prerequisite that produces no error when it is missing — the schedules simply never appear. The order line is the other silent failure: it needs period boundary and billing frequency fields that are not surfaced as required, so a data import passes cleanly and nothing ever bills.

Implementation

Decide first whether these invoices must ever be amended inside Salesforce. If they must, reconstruct. If they are read-only history, do not — the reconstruction cost is not recoverable.

Watch out

  • Posting goes through the standard post action; invoice status is not writeable.
  • Numbering has to be decided before the first posted invoice. Changing it later is a migration.

Alternatives

For pure history, a read-only archive outside the billing objects is usually right, and far cheaper than forcing it through the engine.

Salesforce resources