---
title: "Calculate a verified Bihar domestic before/after solar base-tariff comparison"
method: POST
path: "/solar-savings"
---

# Calculate a verified Bihar domestic before/after solar base-tariff comparison

`POST /solar-savings`

## Request

- Base URL: `https://powerexpertindia.com/v1`
- URL: `https://powerexpertindia.com/v1/solar-savings`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

When billing_month is supplied, the verified Bihar FPPAS engine is applied independently to the before-solar and after-solar base calculations. If no approved executable FPPAS version is available, the response remains successful and explicitly falls back to the verified base-tariff comparison. The response evaluates the existing Bihar non-monetary subsidy-entitlement contract independently for before-solar and after-solar consumption. It does not calculate or deduct a monetary subsidy amount from the tariff result.

## Request body

- union: The request may use either an explicit subcategory_code or consumer_type=domestic with domestic_class for internal verified mapping.
  - object
    - `state_code` 'BR', required
    - `subcategory_code` string, required: Optional when consumer_type and domestic_class are supplied. When both forms are supplied, they must resolve to the same category.
    - `connected_load` union
      - string
      - number
    - `load_unit` 'kw' | 'hp' | 'kva'
    - `existing_monthly_units` integer, required
    - `post_solar_import_units` integer, required
    - `effective_on` string, date
    - `release_id` string, required
    - `verification_tier` 'verified_strict', required
    - `consumer_type` 'domestic': Required when domestic_class is used for internal category resolution.
    - `domestic_class` 'urban' | 'general' | 'rural' | 'lifeline': Caller-declared Bihar domestic classification. The API does not determine government or lifeline eligibility.
    - `billing_month` string: Optional billing month used by the verified Bihar FPPAS selector.
    - `discom_code` 'NBPDCL' | 'SBPDCL': Optional Bihar distribution company selector for FPPAS.
  - object
    - `state_code` 'BR', required
    - `subcategory_code` string: Optional when consumer_type and domestic_class are supplied. When both forms are supplied, they must resolve to the same category.
    - `connected_load` union
      - string
      - number
    - `load_unit` 'kw' | 'hp' | 'kva'
    - `existing_monthly_units` integer, required
    - `post_solar_import_units` integer, required
    - `effective_on` string, date
    - `release_id` string, required
    - `verification_tier` 'verified_strict', required
    - `consumer_type` 'domestic', required: Required when domestic_class is used for internal category resolution.
    - `domestic_class` 'urban' | 'general' | 'rural' | 'lifeline', required: Caller-declared Bihar domestic classification. The API does not determine government or lifeline eligibility.
    - `billing_month` string: Optional billing month used by the verified Bihar FPPAS selector.
    - `discom_code` 'NBPDCL' | 'SBPDCL': Optional Bihar distribution company selector for FPPAS.

## Response `200`

Verified solar savings baseline

- SolarSavingsResponse
  - `status` 'ok', required
  - `api_version` string, required
  - `request_id` string, required
  - `data` SolarSavingsData, required
    - `calculation_type` 'verified_solar_savings_baseline', required
    - `coverage_status` 'production_verified', required
    - `state_code` 'BR', required
    - `subcategory_code` string, required
    - `category_label` string, required
    - `input` object, required
      - `existing_monthly_units` integer, required
      - `post_solar_import_units` integer, required
      - `solar_offset_units` integer, required
      - `connected_load` string, required
      - `load_unit` string, required
    - `before_solar` SolarCalculationSide, required
      - `energy_units` integer, required
      - `result` SolarMoneyResult, required
        - `energy_charge_paise` integer, required
        - `energy_charge_paise_rupees` string, required
        - `fixed_charge_paise` integer, required
        - `fixed_charge_paise_rupees` string, required
        - `demand_charge_paise` integer, required
        - `demand_charge_paise_rupees` string, required
        - `excess_demand_charge_paise` integer, required
        - `excess_demand_charge_paise_rupees` string, required
        - `tod_adjustment_paise` integer, required
        - `tod_adjustment_paise_rupees` string, required
        - `special_adjustment_paise` integer, required
        - `special_adjustment_paise_rupees` string, required
        - `base_total_paise` integer, required
        - `base_total_paise_rupees` string, required
        - `currency` 'INR', required
        - `integer_paise_only` true, required
    - `after_solar` SolarCalculationSide, required
      - `energy_units` integer, required
      - `result` SolarMoneyResult, required
        - `energy_charge_paise` integer, required
        - `energy_charge_paise_rupees` string, required
        - `fixed_charge_paise` integer, required
        - `fixed_charge_paise_rupees` string, required
        - `demand_charge_paise` integer, required
        - `demand_charge_paise_rupees` string, required
        - `excess_demand_charge_paise` integer, required
        - `excess_demand_charge_paise_rupees` string, required
        - `tod_adjustment_paise` integer, required
        - `tod_adjustment_paise_rupees` string, required
        - `special_adjustment_paise` integer, required
        - `special_adjustment_paise_rupees` string, required
        - `base_total_paise` integer, required
        - `base_total_paise_rupees` string, required
        - `currency` 'INR', required
        - `integer_paise_only` true, required
    - `savings` SolarSavingsSummary, required
      - `monthly_base_tariff_saving_paise` integer, required
      - `monthly_base_tariff_saving_paise_rupees` string, required
      - `annualized_base_tariff_saving_paise` integer, required
      - `annualized_base_tariff_saving_paise_rupees` string, required
      - `base_cost_reduction_basis_points` integer, required
      - `base_cost_reduction_percent` string, required
    - `evidence` SolarSavingsEvidence, required
      - `release_id` string, required
      - `financial_year` string, required
      - `effective_from` string, date, required
      - `effective_on` string, date, required
      - `verification_tier` 'verified_strict', required
      - `calculation_version` string, required
      - `release_sha256` string, required
      - `source_refs` string[], required
    - `limitations` SolarSavingsLimitations, required
      - `exact_current_bill` boolean, required
      - `solar_generation_estimated` boolean, required
      - `post_solar_import_supplied_by_client` boolean, required
      - `net_metering_applied` boolean, required
      - `export_credit_applied` boolean, required
      - `fppas_applied` boolean, required
      - `monetary_subsidy_applied` boolean, required
      - `statutory_levies_applied` boolean, required
      - `payback_or_roi_calculated` boolean, required
      - `annualized_value_is_monthly_baseline_times_12` boolean, required
    - `disclosure` SolarSavingsDisclosure, required
      - `estimate_not_utility_bill` boolean, required
      - `verified_base_tariff_comparison_only` boolean, required
      - `not_a_guaranteed_solar_saving` boolean, required
    - `proposal_evidence` SolarProposalEvidence, required
      - `object_version` 'PEI Solar Proposal Evidence Object V1.0.0', required
      - `proposal_use` 'solar_savings_baseline', required
      - `machine_verifiable` true, required
      - `state_code` 'BR', required
      - `subcategory_code` string, required
      - `category_label` string, required
      - `usage_baseline` SolarProposalUsageBaseline, required
        - `existing_monthly_units` integer, required
        - `post_solar_import_units` integer, required
        - `solar_offset_units` integer, required
      - `verified_base_tariff_comparison` SolarProposalTariffComparison, required
        - `before_solar_base_total_paise` integer, required
        - `before_solar_base_total_rupees` string, required
        - `after_solar_base_total_paise` integer, required
        - `after_solar_base_total_rupees` string, required
        - `monthly_base_tariff_saving_paise` integer, required
        - `monthly_base_tariff_saving_rupees` string, required
        - `annualized_base_tariff_saving_paise` integer, required
        - `annualized_base_tariff_saving_rupees` string, required
        - `base_cost_reduction_basis_points` integer, required
        - `base_cost_reduction_percent` string, required
      - `tariff_basis` SolarProposalTariffBasis, required
        - `release_id` string, required
        - `financial_year` string, required
        - `effective_on` string, date, required
        - `verification_tier` 'verified_strict', required
        - `release_sha256` string, required
        - `source_refs` string[], required
      - `proposal_disclaimer` SolarProposalDisclaimer, required
        - `estimate_not_utility_bill` true, required
        - `verified_base_tariff_comparison_only` true, required
        - `not_a_guaranteed_solar_saving` true, required
        - `post_solar_import_supplied_by_client` true, required
        - `excluded_components` string[], required
  - `meta` object, required
    - `release_id` string, required
    - `controller_version` string, required
    - `wrapper_contract` string, required

## Other responses

- `401`: Authentication failed
- `403`: Scope or state access denied
- `404`: State/category not covered
- `409`: Release mismatch
- `422`: Invalid request
- `429`: Rate or quota limit exceeded

---

[API](https://skmtc.dev/powerexpertindia/apis/power-expert-india-verified-tariff-api.md) · [All operations](https://skmtc.dev/powerexpertindia/apis/power-expert-india-verified-tariff-api/llms.txt) · [OpenAPI document](https://skmtc.dev/powerexpertindia/apis/power-expert-india-verified-tariff-api/revisions/9a6f076ae01e?raw)
