Independent Revenue Cloud knowledge
Salesforce Revenue Cloud, from product catalog to cash.
Architecture, implementation detail and field knowledge, built from real Revenue Cloud Advanced and Revenue Cloud Billing projects. Every claim is labelled with where it comes from.
37 objects documented 7 architecture maps 8 solution patterns 10 use cases 6 Revenue Cloud implementations
Why this exists
Most of what breaks is not in the documentation.
The Revenue Cloud documentation describes what the objects are. It does not tell you that a billing schedule is never produced when one setting is missing, that ledger assignment criteria cannot be deleted once inserted, or that a flow criterion written in English fails silently on a French-language org.
Those are not opinions. They are behaviours observed on production and pre-production orgs, at a stated API version, while building six Revenue Cloud implementations. This site publishes them, and labels every claim so you can tell the difference between what Salesforce documents and what we found.
Explore Revenue Cloud
Eight domains, one chain.
What can be sold, and what shape it has
Catalog, classification, attributes, bundles, selling models
ProductCatalog · ProductCategory · ProductClassificationPricingFrom a context to a net price
Pricing procedures, expression sets, decision tables, adjustments
ExpressionSet · DecisionTable · PriceAdjustmentScheduleQuoteThe hub every engine reads
Configuration, the line editor, approvals, documents
Quote · QuoteLineItemOrderTurning an offer into a commitment
Activation, fulfilment, order amendments
Order · OrderItemContractWhat the customer holds, over time
Contracts, assets, amendments, renewals, cancellations
Contract · Asset · AssetStatePeriodBillingFrom an order to a posted invoice
Billing schedules, invoices, credit memos, payments, ledger
BillingSchedule · BillingScheduleGroup · BillingPolicyTaxFrom a transaction to a rate
Legal entities, tax policies, treatments, rates, engines
LegalEntity · TaxPolicy · TaxTreatmentIntegrationWhere Revenue Cloud stops
ERP, accounting, documents, APIs, migration
Architectures
How the pieces actually connect.
Each map is generated from the same data model, so the objects you hover here are the objects you open in the explorer.
The Quote-to-Cash chain
The whole chain on one picture: what each stage produces, and what the next stage needs from it.
ProductProduct and catalog architecture
Why the catalog has two axes — what a product <em>is</em>, and where a seller <em>finds</em> it — and why confusing them is expensive.
PricingPricing architecture
From a context to a net price, and the one decision that keeps catalogs maintainable: when you do <em>not</em> need a decision table.
TaxTax architecture
The path from a transaction to a rate, and the two places the chain actually breaks.
BillingBilling architecture
What has to be true before a single invoice exists — most of it invisible until the first one fails.
ContractAmendment lifecycle
What an amendment actually changes, and where the billing delta comes from.
Solution patterns
Reusable answers, from real projects.
Problem, context, architecture, implementation, trade-offs. Anonymised, but not generalised into uselessness.
Bill-To driven taxation
Make the tax rate follow the billing profile rather than the order address — and know why that is the correct reading of the model, not a workaround.
TaxCountry-driven tax code, without Apex
Vary the tax <em>code</em> — not just the rate — by customer country, using only configuration and a flow.
TaxThe Apex tax engine adapter
When the shipped engine returns nothing, what a working adapter actually has to implement — and the eight failures that stand between you and a taxed invoice.
BillingRouting invoice lines to the ledger
Get invoice lines into the right accounting account when the invoice carries almost none of the information you need to route on.
PricingIncluded allowances and overage
Express “the first N hours are included, beyond that you pay” natively — and find out why only one of your allowances applies.
PricingScaling past the procedure ceiling
What to do when one pricing procedure can no longer hold the logic of every offer.
Use cases
End to end, with the traps.
Subscription business
Term subscriptions, amendments, renewals — and the billing schedule that has to hold it all together.
TaxIntra-EU VAT
Charge the right VAT across EU borders, including the zero-rated cases, and be able to explain any rate on any invoice.
BillingNon-standard payment terms
Due dates that fall on fixed days of the month rather than a number of days after the invoice.
IntegrationBringing in externally produced invoices
Get invoices that were produced elsewhere into Revenue Cloud Billing without pretending the engine made them.
ArchitectureSeveral legal entities
One org, several selling entities, and tax rules that must not leak between them.
ProductA bundle catalog that survives contact with sellers
Model bundles, options and regional variants without producing a catalog nobody can maintain.
Field notes
One observation, proved on an org.
Why a pricing procedure that works in one org returns nothing in the next
Pricing is not one artefact but five, and moving a subset produces a procedure that runs and prices nothing.
BillingThe billing prerequisites that fail without an error
Four pieces of org configuration decide whether billing schedules exist at all. None of them reports anything when missing.
BillingLedger assignment criteria are insert-only, and nothing warns you
A mistake in a ledger routing criterion is permanent. The object accepts field names that do not exist, and only tells you at posting.
TroubleshootingA flow criterion written in English fails silently on a localised org
Billing schedules were never created because a flow filtered on a status value that the org renders in another language.
Salesforce documentation
We send you to the source.
Every page that touches a documented object links to the official Salesforce page for it. Those links are not written by hand: they are resolved against the official tables of contents at build time, so a link that no longer exists breaks the build instead of reaching you.