Many Aurora customers calculate pricing in an external system (i.e. a CRM like Salesforce or Zoho, a partner pricing engine, or an internal quoting tool) and push the final pricing into Aurora. This guide walks through that workflow end-to-end.
If your goal is to configure pricing natively in Aurora, see Stage 6: Configure pricing instead.
PrerequisitesThis workflow assumes a design already exists with a completed performance simulation. See Stages 1–5 in Common Workflows.
Overview
The typical flow has five steps:
- Pull design data from Aurora to feed your external pricing engine
- Set base pricing on the design (flat, price-per-watt, or component-level)
- Add adders and discounts for line items like permit fees, labor premiums, or promotional discounts
- Add incentives for rebates, tax credits, or other credits applied to the system cost
- Retrieve the final pricing to confirm totals and sync back to your CRM
Steps 3 and 4 are optional depending on your pricing model. If your CRM computes a single all-in price, you may only need steps 1, 2, and 5.
Step 1: Pull design data
Your external system may need project and design details to calculate pricing. This can include system size, component quantities, energy production, project location, etc.
| What you need | Endpoint |
|---|---|
| System size, component counts, energy production | Retrieve design summary |
| Current pricing state and component line items | Retrieve design pricing |
| Project location (for regional pricing rules) | Retrieve project |
Feed this data into your CRM or pricing engine to calculate the system price, any adders or discounts, and any applicable incentives.
Step 2: Set base pricing
Push the calculated price to the design. The endpoint accepts three pricing modes:
| Mode | When to use | Key field |
|---|---|---|
| Flat price | Your CRM produces a single all-in system cost | flat_system_price |
| Price per watt | Your CRM calculates a per-watt rate | price_per_watt |
| Component-level | Your CRM prices each component type separately (modules, inverters, storage) | line_items |
Pricing modes are independent across system types — PV, storage, and heat pumps each have their own mode. For example, you can set a flat_system_price for PV while using line_items for storage in the same design.
Endpoint: Update design pricing
Step 3: Add adders and discounts
If your external system breaks out additional charges or discounts as separate line items (i.e. permit fees, roof complexity surcharges, regional labor premiums, promotional discounts) create them as adders on the design.
| Action | Endpoint |
|---|---|
| Create an adder or discount | Create adder |
| Remove an adder or discount | Delete adder |
To create a discount rather than a surcharge, set is_discount: true on the create request along with a negative adder_value.
Create one adder per line item. For example, a regional pricing model might produce:
POST /tenants/{tenant_id}/designs/{design_id}/pricing/adders
{ "adder": { "adder_name": "Northeast Labor Premium", "adder_value": 1500 } }
POST /tenants/{tenant_id}/designs/{design_id}/pricing/adders
{ "adder": { "adder_name": "Steep Roof Surcharge", "adder_value": 800 } }
POST /tenants/{tenant_id}/designs/{design_id}/pricing/adders
{ "adder": { "adder_name": "Promotional Discount", "adder_value": -500, "is_discount": true } }
Adders pushed via the API appear in Sales Mode and on proposals, just like adders created in-app.
If your CRM manages all pricing, do not configure automatic adders in Aurora's admin settings. Automatic adders are triggered by Aurora's internal rules and may conflict with prices pushed via the API.
Step 4: Add incentives
If your CRM tracks incentives (tax credits, state rebates, utility incentives), push them to the design so they appear in proposals and financing simulations.
| Action | Endpoint |
|---|---|
| Create an incentive | Create incentive |
| Remove an incentive | Delete incentive |
POST /tenants/{tenant_id}/designs/{design_id}/pricing/incentives
{ "incentive": { "name": "State Solar Rebate", "amount": 2500, "year_applied": 1 } }
Step 5: Retrieve and verify pricing
After pushing pricing, retrieve the design's computed totals to confirm everything looks correct and sync the final numbers back to your CRM.
Endpoint: Retrieve design pricing
The response includes the base system cost, all adders and discounts, incentives, and the net total — everything your CRM needs to keep its records aligned with what Aurora will show in proposals.