# Copy Premium Rates

Take a list of Rates and a set of configuration options and copy those rates.

Endpoint: POST /billing-rate-copy
Version: v1
Security: apiKeyAuth, bearerAuth

## Security:

  - `apiKeyAuth` (unknown)
    apiKey in header x-api-key

  - `bearerAuth` (unknown)
    http bearer JWT

## Header parameters:

  - `vbasoftware-database` (string, required)
    Target database

## Request fields (application/json):

  - `rate_Basis` (string)
    Used in both Rate Copy and Rate Change

  - `keep_Rate_Basis` (boolean)
    Used in both Rate Copy and Rate Change

  - `rate_Category` (string)
    Used in both Rate Copy and Rate Change

  - `keep_Rate_Category` (boolean)
    Used in both Rate Copy and Rate Change

  - `plan_ID` (string)
    Used in both Rate Copy and Rate Change

  - `keep_Plan_ID` (boolean)
    Used in both Rate Copy and Rate Change

  - `group_ID` (string)
    Used in both Rate Copy and Rate Change

  - `keep_Group_ID` (boolean)
    Used in both Rate Copy and Rate Change

  - `division_ID` (string)
    Used in both Rate Copy and Rate Change

  - `keep_Division_ID` (boolean)
    Used in both Rate Copy and Rate Change

  - `premRate_Type` (string)
    Used in both Rate Copy and Rate Change

  - `rate_Option` (integer)
    Used in both Rate Copy and Rate Change
1 - Use Existing;
2 - Update Existing;
3 - Create New;

  - `payee_Option` (integer)
    Used in both Rate Copy and Rate Change
1 - Use Existing Rates;
2 - Create New Rates;
3 - Add;

  - `existing_Rate_Term_Date` (string)
    Used only with Rate Change

  - `new_Rate_Effective_Date` (string)
    Used only with Rate Change

  - `new_Rate_Term_Date` (string)
    Used only with Rate Change

  - `user_ID` (string)
    Used in both Rate Copy and Rate Change

  - `premRates` (array)
    Used in both Rate Copy and Rate Change

  - `premRates.premRate_Key` (integer, required)
    Unique identifier for the PremRate Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.add_On_Grouping_ID` (string)
    Used to identify Add On rates by Group

  - `premRates.additional_Invoice_Address` (string)
    Address the additional invoice is sent to

  - `premRates.additional_Invoice_Frequency` (string)
    Frequency of the additional invoice

  - `premRates.additional_Invoice_Level` (string)
    Allows split billing at this level

  - `premRates.address_Type` (string)
    Level of the Address used to determine if the rate applies

  - `premRates.adjustment_Reason` (integer)
    Adjustment Reason of the PremRate

  - `premRates.adult` (boolean, required)
    Flag used to determine if the rate applies to Adults Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.age_From` (integer)
    Beginning Age range of the PremRate

  - `premRates.age_Thru` (integer)
    Ending Age range of the PremRate

  - `premRates.age_Type` (string)
    Detemines what date is used to calculate Age

  - `premRates.age_Type_Month` (string)
    Detemines what Month is used if the Month Type is selected

  - `premRates.assign_To_New_Division` (boolean, required)
    Flag to determine if the rate applies to new Divisions Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.assign_To_New_Group` (boolean, required)
    Flag to determine if the rate applies to new Groups Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.assign_To_New_Member` (boolean, required)
    Flag to determine if the rate applies to new Members Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.auto_Adjust` (boolean, required)
    Flag that determines if the rate is automatically adjusted Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.auto_Adjust_Reason` (integer)
    Reason applied to automatic adjustments

  - `premRates.avoid_Retro` (boolean, required)
    This flag indicates prevention of the retro logic from creating backout adjustments for this rate Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.benefit_Code` (string)
    Benefit Code of the PremRate

  - `premRates.billing_Cycle_ID` (string)
    This is the Billing Cycle the invoice was gerenated for.

  - `premRates.child` (boolean, required)
    Flag used to determine if the rate applies to Children Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.city` (string)
    City of the Address used to determine if the rate applies

  - `premRates.class_Code` (string)
    Class Code for the PremRate

  - `premRates.country_ID` (string)
    Country ID of the Address used to determine if the rate applies

  - `premRates.county_Code` (string)
    Country Code of the Address used to determine if the rate applies

  - `premRates.description` (string)
    Description of the PremRate

  - `premRates.division_ID` (string)
    Unique identifier for the Division

  - `premRates.effective_Date` (string)
    Effective Date of the PremRate

  - `premRates.effective_Date_Type` (string)
    Determines the logic that modifies the Effective Date of the PremRate to a date based on the enrollment of the member. Note: The database will apply a default value of `NORMAL` for this field if a value is not provided.

  - `premRates.employee_Employer_Contribution` (string)
    Determines if the contribution is Employee or Employer

  - `premRates.employer_Contribution` (number)
    Amount of the contribution

  - `premRates.employer_Contribution_Pct` (boolean, required)
    Determines if the contribution is a percentage Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.employer_Rate` (number)
    Decimal value that defines the base employer rate

  - `premRates.employer_Rate_Max` (number)
    Maximum the employer rate will be regardless of the calculation

  - `premRates.employer_Rate_Minimum` (number)
    Minimum the employer rate will be regardless of the calculation

  - `premRates.employer_Rate_Type` (string)
    Type of Employer Rate

  - `premRates.employer_Rate_Variable1` (number)
    First variable used in calculating the employer rate based on the type

  - `premRates.employer_Rate_Variable2` (number)
    Second variable used in calculating the employer rate based on the type

  - `premRates.employer_Rate_Variable3` (number)
    Third variable used in calculating the employer rate based on the type

  - `premRates.employer_Round_Precision` (integer)
    Precision that the employerrate is rounded to

  - `premRates.employer_Round_Type` (string)
    Type that determine how the employer rate is rounded

  - `premRates.enrolled_Count_From` (integer)
    Beginning range based on number of enrollments

  - `premRates.enrolled_Count_Thru` (integer)
    Ending range based on number of enrollments

  - `premRates.enrolled_Count_Type` (string)
    Type of enrollments used to calculate the number of enrollments

  - `premRates.enrolled_Duration_From` (integer)
    Beginning range based on length of enrollment

  - `premRates.enrolled_Duration_Min` (integer)
    Minimum length of enrollment

  - `premRates.enrolled_Duration_Option` (string)
    Determines if the date is based on the Member or the Plan enrollment

  - `premRates.enrolled_Duration_Thru` (integer)
    Ending range based on length of enrollment

  - `premRates.enrolled_Duration_Type` (string)
    Type of date used to determine the enrollment range

  - `premRates.entry_Date` (string)
    Date record was first added to the system

  - `premRates.entry_User` (string)
    User that first added the record to the system

  - `premRates.group_Division_Offering` (boolean, required)
    Used to determine which records are updated when applying changes to a template Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.group_ID` (string)
    Unique identifier for the Group

  - `premRates.member_Seq` (string)
    Unique sequence for a Member

  - `premRates.network_ID` (string)
    Unique identifier for the Network

  - `premRates.network_Type` (string)
    Type of Network

  - `premRates.new_Hire_Age` (boolean, required)
    Flag that determines the Age based on the date of hire Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.override_Enrolled_Dates` (boolean, required)
    This flag indicates the rate should be paid if enrolled in for even a single day during the month. Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.parent_PremRate_Key` (integer)
    PremRate_Key of the template rate this rate was created from

  - `premRates.payment_Method` (string)
    The primary key of the payment method

  - `premRates.plan_ID` (string)
    Unique identifier for the Plan

  - `premRates.plan_Type` (string)
    Type of Plan

  - `premRates.premRate_Basis` (string)
    Basis of the PremRate

  - `premRates.premRate_Category` (string)
    Category of the PremRate

  - `premRates.premRate_ID` (string)
    Unique identifier for the PremRate

  - `premRates.premRate_Type` (string)
    Type of the PremRate

  - `premRates.premium_Proration` (boolean, required)
    Flag that determines if the rate is prorated Note: This field is marked as NOT NULL in the database and therefore required by the API.

  - `premRates.rate` (number)
    Decimal value that defines the base rate

  - `premRates.rate_Max` (number)
    Maximum the rate will be regardless of the calculation

  - `premRates.rate_Minimum` (number)
    Minimum the rate will be regardless of the calculation

  - `premRates.rate_Pace` (string)
    How often the rate applies

  - `premRates.rate_Pace_Type` (string)
    The day the rate applies when the pace is weekly

  - `premRates.rate_Round_Precision` (integer)
    Precision that the rate is rounded to

  - `premRates.rate_Round_Type` (string)
    Type that determine how the rate is rounded

  - `premRates.rate_Type` (string)
    Type of Rate

  - `premRates.rate_Variable1` (number)
    First variable used in calculating the rate based on the type

  - `premRates.rate_Variable2` (number)
    Second variable used in calculating the rate based on the type

  - `premRates.rate_Variable3` (number)
    Third variable used in calculating the rate based on the type

  - `premRates.region_Code` (string)
    Region Code of the Address used to determine if the rate applies

  - `premRates.relationship` (string)
    Relationship for the PremRate

  - `premRates.sex` (string)
    Flag used to determine what Sex the rate applies to

  - `premRates.smoker` (string)
    Flag to determine if the rate applies to Smokers

  - `premRates.state` (string)
    State of the Address used to determine if the rate applies

  - `premRates.subscriber_ID` (string)
    Unique identifier for the Subscriber

  - `premRates.term_Date` (string)
    Term Date of the PremRate

  - `premRates.term_Date_type` (string)
    Determines the logic that modifies the Term Date of the PremRate to a date based on the enrollment of the member. Note: The database will apply a default value of `NORMAL` for this field if a value is not provided.

  - `premRates.tier` (string)
    Tier of the PremRate

  - `premRates.update_Date` (string)
    Date the record was last updated in the system

  - `premRates.update_User` (string)
    User that last updated the record in the system

  - `premRates.zip_Code_From` (string)
    Beginning Zip Code of the Address used to determine if the rate applies

  - `premRates.zip_Code_Thru` (string)
    Ending Zip Code of the Address used to determine if the rate applies

  - `premRatePayees` (array)
    Used in both Rate Copy and Rate Change

  - `premRatePayees.premRate_Key` (integer, required)

  - `premRatePayees.payee_ID` (string, required)

  - `premRatePayees.account_Key` (integer)

  - `premRatePayees.amount` (number)

  - `premRatePayees.amount_Max` (number)

  - `premRatePayees.amount_Pct` (boolean, required)

  - `premRatePayees.dist_Type` (string)

  - `premRatePayees.entry_Date` (string)

  - `premRatePayees.entry_User` (string)

  - `premRatePayees.payor_ID` (string)

  - `premRatePayees.policy_Number` (string)

  - `premRatePayees.premRate_Category` (string)

  - `premRatePayees.priority` (integer)

  - `premRatePayees.rate` (number)

  - `premRatePayees.rate_Max` (number)

  - `premRatePayees.rate_Min` (number)

  - `premRatePayees.rate_Round_Precision` (integer)

  - `premRatePayees.rate_Round_Type` (string)

  - `premRatePayees.rate_Var1` (number)

  - `premRatePayees.rate_Var2` (number)

  - `premRatePayees.rate_Var3` (number)

  - `premRatePayees.update_Date` (string)

  - `premRatePayees.update_User` (string)

## Response 202:

  - `202` (unknown)
    Accepted for processing

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 403:

  - `403` (unknown)
    Forbidden. The x-api-key header is missing or not valid. The API gateway sends this response, not VBAPI, so the body is not the VBAPI envelope; see Errors and troubleshooting.

## Response 429:

  - `429` (unknown)
    Too many requests. The limit is 25 requests per second sustained, with bursts up to 50, per API key. Wait and retry with exponential backoff and jitter.

