本文へ移動
cccskills
無料GitHub で公開

billing-schedule-setup

Configure Salesforce Billing (blng__ managed package) billing schedules, invoice plans, billing policies, and billing treatments on activated Orders. Triggers: 'billing schedule not generating invoices', 'blng__BillingSchedule__c missing after order activation', 'in-advance vs in-arrears billing', 'milestone billing', 'invoice run not picking up order products', 'evergreen billing setup', 'billing treatment configuration'. NOT for revenue schedules, GL transactions and ASC 606 - use admin/revenue-recognition-requirements. NOT for native Revenue Cloud (RLM) BillingSchedule objects - use data/revenue-cloud-data-model.

インストール方法を見る

含まれるファイル(7)

  • SKILL.md15.7 KB
  • references/examples.md5.7 KB
  • references/gotchas.md5.9 KB
  • references/llm-anti-patterns.md8.0 KB
  • references/well-architected.md5.6 KB
  • scripts/check_billing_schedule_setup.py9.7 KB
  • templates/billing-schedule-setup-template.md4.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Billing Schedule Setup

This skill activates when a practitioner needs to configure Salesforce Billing (blng__ namespace) billing schedules, invoice plans, billing policies, or billing treatments — from initial Legal Entity setup through Invoice Run execution. It covers In-Advance, In-Arrears, Evergreen, Milestone, and Dynamic Invoice Plan schedule types.


Before Starting

Gather this context before working on anything in this domain:

  • Confirm the Salesforce Billing managed package (namespace prefix blng__) is installed. Salesforce Billing is a separate managed package layered on top of Salesforce CPQ — it is not part of core Salesforce or CPQ alone.
  • Confirm Data Pipelines is enabled in the org (Setup > Data Pipelines). This is a hard platform dependency: without it, the Billing package cannot create billing schedule records even if all configuration is correct.
  • Identify the required schedule type (In-Advance, In-Arrears, Evergreen, Milestone, or Dynamic Invoice Plan) — this determines configuration path and invoice run behavior.
  • Confirm the OrderProducts are CPQ-sourced (via Quote > Order flow), not manually created — manually created Orders bypass CPQ fields required by Billing.
  • Know the billing period (Monthly, Quarterly, Annually, Custom) and billing day-of-month required by the business.

Core Concepts

Billing Lifecycle: Order Activation Creates blng__BillingSchedule__c

The Salesforce Billing lifecycle begins when an Order is activated. At activation, the Billing package creates one blng__BillingSchedule__c record per OrderProduct that has a valid Billing Rule reference. Each blng__BillingSchedule__c holds the projected charge dates and amounts for that product's billing period. These records are auto-generated — do not create them manually.

The configuration chain that must be in place before Order activation:

Legal Entity → Billing Policy → Billing Treatment → Tax Policy → (Invoice Plan if Dynamic)

Each link in this chain is a lookup on the previous object. Missing any one link prevents billing schedule generation or invoice creation.

Schedule Types and Their Behavior

Salesforce Billing supports five schedule types, each controlled by the blng__BillingType__c field on blng__BillingRule__c:

TypeInvoice TimingManual Trigger RequiredNotes
In-AdvanceInvoice issued before service periodNoDefault for most subscription SaaS
In-ArrearsInvoice issued after service period endsNoCalculates from actual usage period end date
EvergreenRolls forward each period indefinitelyNoNo end date; must explicitly cancel
MilestoneInvoice issued at milestone completionYesAdmin or Apex must trigger invoice run per milestone
Dynamic Invoice PlanCustom date-driven scheduleNoRequires separate Invoice Plan record

The most commonly misconfigured: Milestone billing — practitioners expect it to fire automatically but it requires a manual Invoice Run scoped to the milestone date.

Invoice Run: Batch Processing and Governor Limits

Invoice Runs (blng__InvoiceRun__c) are the mechanism that aggregates blng__BillingSchedule__c items into blng__Invoice__c records. Invoice Runs execute as batch jobs, processing approximately 300 billing schedule lines per batch chunk to stay within Salesforce governor limits. For orgs with thousands of order products, this means a single Invoice Run may spawn many batch iterations.

Key Invoice Run fields:

  • blng__InvoiceDate__c — the date that appears on the invoice header
  • blng__TargetDate__c — the cutoff date; only schedule items on or before this date are processed
  • blng__Status__c — Posted, Canceled, Draft; only Draft runs can be modified

blng__BillingSchedule__c vs blng__RevenueSchedule__c vs OpportunityLineItem Revenue Schedules

These are three entirely different constructs:

  • blng__BillingSchedule__c — Salesforce Billing managed package object; one per OrderProduct; controls invoice generation
  • blng__RevenueSchedule__c — Salesforce Billing managed package object; controls revenue recognition timing (separate from billing timing)
  • OpportunityLineItem Revenue Schedule — standard Salesforce feature for splitting opportunity revenue; has no integration with the Billing package

Do not conflate these. Enabling "Revenue Schedules" in standard Salesforce Setup is unrelated to and does not replace blng__RevenueSchedule__c.


Common Patterns

Pattern 1: Standard Subscription Billing (In-Advance, Monthly)

When to use: A subscription product should invoice at the start of each monthly period.

How it works:

  1. Create a blng__BillingRule__c with blng__BillingType__c = In-Advance, blng__BillingDayOfMonth__c = 1 (or contract start day), blng__InitialBillingDate__c logic set to Order Start Date.
  2. Create a blng__RevenueRecognitionRule__c if revenue recognition is required.
  3. On the Product2 record, set the blng__BillingRule__c lookup to the new rule.
  4. Ensure a Billing Policy exists with a Legal Entity and Tax Policy attached.
  5. Ensure the Billing Policy is set on the Account record (blng__BillingPolicy__c lookup on Account).
  6. Activate the Order — blng__BillingSchedule__c records are created automatically.
  7. Run an Invoice Run with blng__TargetDate__c set to today or the desired billing date.

Why not the alternative: Manually creating blng__BillingSchedule__c records bypasses Billing Rule logic and produces orphaned records that Invoice Runs cannot reliably pick up.

Pattern 2: Milestone Billing for Professional Services

When to use: A services engagement invoices at project milestone completion (e.g., 30% at kickoff, 40% at delivery, 30% at acceptance).

How it works:

  1. Set blng__BillingType__c = Milestone on the blng__BillingRule__c.
  2. Define milestone amounts on the blng__BillingSchedule__c child records (created at Order activation).
  3. When a milestone is achieved, update the milestone record's status to indicate completion.
  4. Manually trigger an Invoice Run scoped to the milestone date — the run will only process lines where the milestone status is complete and the date is on or before blng__TargetDate__c.

Why not the alternative: Using In-Advance for milestone billing creates invoices on fixed calendar dates regardless of project status, violating contract terms and creating disputes.


Decision Guidance

SituationRecommended ApproachReason
SaaS subscription, invoice before each periodIn-Advance billing scheduleMatches standard subscription contract terms; invoices auto-generate
Usage-based billing, invoice after meteringIn-Arrears billing scheduleArrears calculates from actual period end; supports usage data import
Month-to-month with no defined end dateEvergreen billing scheduleNo termination date required; rolls forward indefinitely until canceled
Professional services with milestone gatesMilestone billing with manual Invoice RunPrevents premature invoicing; admin controls when each invoice fires
Complex custom schedule (variable amounts by date)Dynamic Invoice PlanSupports arbitrary date/amount combinations outside period-based logic
Need to invoice multiple order products on one invoiceSingle Invoice Run with shared Invoice DateInvoice Run aggregates multiple schedule items into one blng__Invoice__c per Account

Recommended Workflow

Step-by-step instructions for an AI agent or practitioner working on this task:

  1. Verify prerequisites — Confirm Salesforce Billing (blng__) is installed, Data Pipelines is enabled, and the org has at least one CPQ-sourced Order in Draft status. Check that the Account has a blng__BillingPolicy__c value set.
  2. Build the configuration chain — In order: create or confirm Legal Entity (blng__LegalEntity__c), then Billing Policy (blng__BillingPolicy__c) linked to the Legal Entity and Tax Policy, then Billing Treatment (blng__BillingTreatment__c) linked to the Billing Policy. Do not skip steps or reorder.
  3. Configure Billing Rules on Products — Set blng__BillingRule__c on each Product2 record. Select the schedule type (In-Advance, In-Arrears, Evergreen, Milestone). Set billing period and day-of-month fields to match contract terms.
  4. Activate the Order — Change Order Status to Activated. Confirm that blng__BillingSchedule__c records are created — one per OrderProduct. If records are missing, check Data Pipelines status and Billing Rule linkage.
  5. Create and submit an Invoice Run — Create a blng__InvoiceRun__c with blng__InvoiceDate__c and blng__TargetDate__c set correctly. Set Status to Posted to execute. Monitor the batch job in Setup > Apex Jobs for completion.
  6. Validate invoices — Confirm blng__Invoice__c records are created with correct amounts, invoice dates, and line items. Confirm blng__BillingSchedule__c records show the expected next billing date.
  7. For Milestone billing only — After each milestone completes, manually trigger a scoped Invoice Run. Confirm that only the completed milestone lines are invoiced; future milestones must remain uninvoiced.

Review Checklist

Run through these before marking work in this area complete:

  • Data Pipelines is enabled in Setup (hard dependency confirmed)
  • Legal Entity, Billing Policy, Billing Treatment, and Tax Policy are all created and linked in the correct order
  • Every Product2 in scope has a blng__BillingRule__c lookup populated with the correct schedule type
  • The Account record has blng__BillingPolicy__c set to the correct Billing Policy
  • blng__BillingSchedule__c records were auto-generated upon Order activation (no manual records)
  • Invoice Run blng__TargetDate__c is set to capture all intended billing schedule items
  • Invoice Run batch completed without errors (check Setup > Apex Jobs)
  • blng__Invoice__c records show correct amounts, line counts, and invoice dates
  • Milestone billing: only completed milestones have been invoiced; future milestones are still pending

Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

  1. Data Pipelines is a silent hard dependency — If Data Pipelines is not enabled, the Billing package installs successfully and the UI shows no errors, but blng__BillingSchedule__c records are never created when Orders activate. The failure is silent — no error is thrown, no record is created. Always verify Data Pipelines is enabled before debugging any "missing billing schedule" issue.
  2. Billing Policy must be on the Account, not the Order — Many practitioners set the Billing Policy lookup on the Order directly, expecting it to drive invoice generation. The billing engine reads blng__BillingPolicy__c from the Account record, not the Order. Setting it only on the Order has no effect.
  3. Invoice Run Target Date is a hard cutoff, not a range — An Invoice Run processes all billing schedule items where the next billing date is on or before blng__TargetDate__c. If blng__TargetDate__c is set to yesterday, items scheduled for today are excluded. Practitioners expecting to invoice "through today" must set target date to today, not yesterday.
  4. In-Arrears calculates from period end, not run date — In-Arrears billing schedule amounts are finalized based on the actual service period end date stored on the schedule item, not the date the Invoice Run executes. Running the Invoice Run early does not change the invoice amount or date — the run simply skips items whose period has not yet ended.
  5. Manually created blng__BillingSchedule__c records are not invoice-run-eligible — The Invoice Run engine has internal validation that marks billing schedule items as engine-created. Records created via Data Loader, Flow, or Apex that bypass the Order activation trigger are treated as invalid by the Invoice Run and silently skipped.

Output Artifacts

ArtifactDescription
blng__LegalEntity__c recordTop of the configuration chain; required before Billing Policy can be created
blng__BillingPolicy__c recordLinks Legal Entity and Tax Policy; set on Account to drive billing behavior
blng__BillingTreatment__c recordChild of Billing Policy; defines how the policy applies to specific billing scenarios
blng__BillingRule__c recordSet on Product2; defines schedule type, billing period, and day-of-month
blng__BillingSchedule__c recordsAuto-generated per OrderProduct at Order activation; source of truth for invoice timing
blng__InvoiceRun__c recordTriggers batch processing of billing schedule items into invoices
blng__Invoice__c recordsAggregated invoice documents sent to customers

Related Skills

  • admin/products-and-pricebooks — Configure Product2 records and price book entries before Billing Rules can be applied
  • admin/batch-job-scheduling-and-monitoring — Monitor Invoice Run batch jobs in Setup > Apex Jobs and diagnose batch failures

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use this skill when writing test-first, behavior-driven acceptance criteria in Given/When/Then format for a Salesforce user story. Covers happy path, edge cases, negative paths, permission boundaries, and data-state preconditions so the AC block can drive UAT scripts and Apex test design downstream. Trigger keywords: given when then, gherkin, behavior driven AC, test first acceptance criteria, scenario outline, BDD acceptance criteria. NOT for the user-story format itself (use admin/user-story-writing-for-salesforce). NOT for UAT script writing (use admin/uat-test-case-design). NOT for Apex test method generation (use agents/test-class-generator). NOT for high-level UAT planning (use admin/uat-and-acceptance-criteria). More triggers: acceptance criteria record, ac_id, req_id on a criterion, artefact under test, negative case for a rule-type requirement, no-match fall-through criterion, oracle for a Then clause, test type apex flow manual, criteria linter, check_ac_format.py, --manifest-dir.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Task and Event objects: polymorphic WhatId/WhoId, Activity object model, ActivityHistory vs OpenActivity, activity timeline customization, bulk task creation, Einstein Activity Capture boundaries. NOT for turning on EAC or calendar sync — use admin/einstein-activity-capture-setup. NOT for Email-to-Case — use admin/case-management-setup. Covers ActivitiesSettings metadata, enableActivities, shared Task/Event custom fields and FLS, TaskStatus value sets, Shared Activities and TaskRelation/EventRelation, recurring and child activities, and partial-success bulk DML on Task.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Design Invocable Apex actions that return deterministic, agent-friendly errors instead of surfacing raw exceptions to the LLM. NOT for authoring the action itself — @InvocableMethod schema, labels, security context — use agentforce/custom-agent-actions-apex. NOT for the Apex tests that force each error branch — use agentforce/agent-action-unit-tests.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Use when designing how an Agentforce agent extracts structured input parameters (slots) from a user's natural-language utterance to invoke an action. Triggers: 'agent extract date from user', 'agent action argument extraction', 'agentforce slot filling', 'agent invocable input mapping', 'agent fails to fill required parameter'. NOT for action authoring (use agentforce/agent-actions) or for prompt-template variable binding (use agentforce/prompt-builder-templates).

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Apex test patterns for @InvocableMethod agent actions: per-reason-code branch coverage, bulk safety, callout mocking, deterministic assertions. NOT for testing whether the agent routes to the right topic or answers well — use agentforce/agent-testing-and-evaluation. NOT for designing the error envelope the tests assert on — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Designing or reviewing Agentforce actions: Flow actions, Apex invocable actions, prompt-template actions, action naming, input and output contracts, confirmation requirements, and safe error behavior. Triggers: 'agent actions', 'build an agent that can look up an order', 'make the agent able to check order status', 'give the agent a capability', 'agent that can retrieve a record', 'flow action for agent', 'agent invocable action', 'action schema design'. NOT for writing the Apex class itself — use agentforce/custom-agent-actions-apex. NOT for the reason_code error envelope that stops an agent retry loop — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

PranavNagrecha のスキルをすべて見る

このスキルの問題を報告する