> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roostedhr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Rate Card

> Creates a new rate card with per-skillset billing and pay rate configuration.

<Note>
  Both `name` and `skillsets` are required. The `skillsets` array defines per-skillset billing and pay rates for the new rate card. Each entry maps to a skillset in your company.
</Note>

<Tip>
  Set `hourly_type` to `"shift"` for flat shift-based rates, or `"hourly"` (default) for time-based rates with optional overtime and double-time cutoffs.
</Tip>


## OpenAPI

````yaml api-reference/v01.12.00/openapi-v01.12.00.json POST /rate-cards
openapi: 3.0.0
info:
  title: Roosted
  version: 0.1.12
  contact:
    name: Support
    url: https://support.roostedhr.com/support/home
    email: support@roostedhr.com
  description: |-
    Enterprise API

    Sandbox keys and Production keys are requested from support
servers:
  - url: https://api.roostedhr.com/api/1_12
  - url: https://sandbox.roostedhr.com/api/1_12
security:
  - X-API-KEY: []
tags:
  - name: Announcements
  - name: Areas
  - name: Clients
  - name: Company
  - name: Configuration
  - name: Events
  - name: Locations
  - name: Payroll Groups
  - name: Rate Cards
  - name: Shifts
  - name: Skillsets
  - name: Time Tracking
  - name: Wage Rules
  - name: Workers
paths:
  /rate-cards:
    post:
      tags:
        - Rate Cards
      summary: Create Rate Card
      description: >-
        Creates a new rate card with per-skillset billing and pay rate
        configuration.
      operationId: post-rate-card
      requestBody:
        description: Rate card data with skillset rate configurations
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RateCardCreateRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateCard'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Machine-readable error code.
                  error:
                    type: string
                    description: Human-readable error message.
              examples:
                Rate card name is required:
                  value:
                    code: RTC-100
                    error: Rate card name is required
                Rate card name exceeds maximum length:
                  value:
                    code: RTC-200
                    error: Rate card name exceeds maximum length
                Duplicate rate card name:
                  value:
                    code: RTC-300
                    error: Duplicate rate card name
                Invalid skillset reference:
                  value:
                    code: RTC-400
                    error: Invalid skillset reference
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Machine-readable error code.
                  error:
                    type: string
                    description: Human-readable error message.
              examples:
                Invalid or missing API key:
                  value:
                    code: ATH-100
                    error: Invalid or missing API key
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Machine-readable error code.
                  error:
                    type: string
                    description: Human-readable error message.
              examples:
                Insufficient permissions to manage rate cards:
                  value:
                    code: RTC-800
                    error: Insufficient permissions to manage rate cards
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Machine-readable error code.
                  error:
                    type: string
                    description: Human-readable error message.
              examples:
                Rate card not found:
                  value:
                    code: RTC-700
                    error: Rate card not found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: Machine-readable error code.
                  error:
                    type: string
                    description: Human-readable error message.
              examples:
                An unexpected error occurred:
                  value:
                    code: RTC-900
                    error: An unexpected error occurred
components:
  schemas:
    RateCardCreateRequest:
      type: object
      description: >-
        Request body for creating a new rate card with per-skillset rate
        configuration.
      required:
        - name
        - skillsets
      properties:
        name:
          type: string
          description: Rate card name (max 100 characters)
        skillsets:
          type: array
          items:
            $ref: '#/components/schemas/RateCardSkillsetEntry'
          description: Array of skillset rate configurations
    RateCard:
      type: object
      description: >-
        A rate card entry with skillset-specific billing and pay rate
        configuration.
      properties:
        id:
          type: string
          description: Rate card identifier
        name:
          type: string
          description: Rate card name
        roles_id:
          type: string
          description: Associated skillset (role) identifier
        skillset:
          type: string
          description: Skillset name
        billing_rate:
          type: string
          description: Billing rate charged to the client
        pay_rate:
          type: string
          description: Pay rate for the worker
        hourly_type:
          type: string
          enum:
            - hourly
            - shift
          description: Rate calculation type
        daily_overtime_cutoff:
          type: string
          nullable: true
          description: Hours before daily overtime kicks in
        daily_doubletime_cutoff:
          type: string
          nullable: true
          description: Hours before daily double-time kicks in
        selected_payroll_rules:
          type: array
          items:
            type: string
          description: Advanced payroll rule IDs applied to this rate card entry
    RateCardSkillsetEntry:
      type: object
      description: Skillset rate configuration for a new rate card.
      required:
        - id
      properties:
        id:
          type: string
          description: Skillset (role) identifier
        name:
          type: string
          description: Skillset name
        pay_rate:
          type: number
          description: Pay rate for the worker
        billing_rate:
          type: number
          description: Billing rate charged to the client
        hourly_type:
          type: string
          enum:
            - hourly
            - shift
          description: Rate calculation type
        daily_overtime_cutoff:
          type: integer
          nullable: true
          description: Hours before daily overtime kicks in
        daily_doubletime_cutoff:
          type: integer
          nullable: true
          description: Hours before daily double-time kicks in
        selected_payroll_rules:
          type: array
          items:
            type: string
          description: Advanced payroll rule IDs to apply
  securitySchemes:
    X-API-KEY:
      name: X-API-KEY
      type: apiKey
      in: header

````