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

# Create a price plan

> Create a price plan



## OpenAPI

````yaml post /v2/price_plans
openapi: 3.0.3
info:
  version: '1.0'
  title: Togai Apis
  contact:
    email: engg@togai.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  description: APIs for Togai App
servers:
  - description: Api endpoint
    url: https://api.togai.com/
  - description: Sandbox api endpoint
    url: https://sandbox-api.togai.com/
security:
  - bearerAuth: []
tags:
  - name: Customers
    description: Customer level calls
  - name: Accounts
    description: Account level calls
  - name: Event Schemas
    description: Event Schema level calls
  - name: Usage Meters
    description: Usage Meter level calls
  - name: Price Plans
    description: (DEPRECATED) Price Plan level calls
  - name: PricePlanV2
    description: Price Plan V2 level calls
  - name: Schedules
    description: Account Schedule level calls
  - name: Pricing Rules
    description: Pricing Rules level calls
  - name: Settings
    description: Settings
  - name: Price Experimentation
    description: Price Experimentation apis
  - name: InvoiceGroups
    description: Invoice Group level calls
  - name: Organization
    description: Organization level calls
  - name: FileStorage
    description: File Storage level calls
  - name: Aliases
    description: Alias level calls
  - name: Reports
    description: Report level calls
  - name: ReportTemplates
    description: Report Template level calls
  - name: Customer Portal
    description: Portal level calls
  - name: Alerts
    description: Alert level calls
  - name: Event Management
    description: APIs for getting events ingested in Togai
    externalDocs:
      description: docs
      url: https://togai.com/docs/billing/events
  - name: Metrics
    description: APIs for getting Togai metrics
    externalDocs:
      description: docs
      url: https://togai.com/docs/metrics
  - name: Licenses
    description: APIs for getting or updating license records in Togai
  - name: Entitlements
    description: APIs related to entitlements
  - name: Invoices
    description: Invoices API
  - name: Credits
    description: Credits API
  - name: Wallet
    description: Wallet API
  - name: InvoiceTemplates
    description: InvoiceTemplates API
  - name: InvoiceSequence
    description: InvoiceSequence API
  - name: Payments
    description: Payments API
  - name: Authentication
    description: Authentication API
externalDocs:
  description: Find out more about Togai
  url: https://docs.togai.com/docs
paths:
  /v2/price_plans:
    post:
      tags:
        - PricePlanV2
      summary: Create a price plan
      description: Create a price plan
      operationId: createPricePlanV2
      requestBody:
        $ref: '#/components/requestBodies/CreatePricePlanV2Request'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanV2'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  requestBodies:
    CreatePricePlanV2Request:
      description: Payload to create price plan
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreatePricePlanV2Request'
  responses:
    PricePlanV2:
      description: Response for Create and Get price plan requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PricePlanV2'
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            ErrorResponse:
              summary: Error message
              value:
                message: <Reason message>
  schemas:
    CreatePricePlanV2Request:
      description: Request to create a price plan
      type: object
      additionalProperties: false
      required:
        - name
        - type
        - supportedCurrencies
      properties:
        name:
          type: string
          description: Name of the price plan
          maxLength: 50
        description:
          description: Description of price plan
          type: string
          maxLength: 255
        type:
          $ref: '#/components/schemas/PricePlanType'
        pricingCycleConfig:
          $ref: '#/components/schemas/PricingCycleConfig'
        supportedCurrencies:
          description: List of currencies supported by the price plan
          type: array
          uniqueItems: true
          items:
            type: string
        deferredRevenue:
          description: >
            This option can be enabled while creating a price plan to opt for
            deferred revenue finalization.

            i.e, Togai will assume that the price plan may change any time
            during the pricing cycle and 

            thereby does not compute the revenue in near-real time. 

            This gives the flexibility of editing rate cards in price plan from
            beginning of the pricing cycle.

            Enabling this mode comes with the following limitations.

            1. Following rate cards are not supported under a `deferredRevenue`
            plan
                * creditGrantRateCards,
                * billingEntitlementRateCards,
                * entitlementOverageRateCards,
                * IN_ADVANCE fixedFeeRateCards,
                * IN_ADVANCE licenseRateCards
            2. Metrics API return revenue metrics only after the grace period of
            the account's pricing cycle 

            (i.e, only once the invoice becomes DUE)
          type: boolean
        allowOngoingCycleUpdates:
          description: |
            Allow changes to price plan from the beginning of the ongoing cycle.
          type: boolean
    PricePlanV2:
      allOf:
        - $ref: '#/components/schemas/CreatePricePlanV2Request'
        - type: object
          required:
            - id
            - referenceId
            - version
            - status
            - createdAt
            - updatedAt
          properties:
            id:
              type: string
              maxLength: 50
            referenceId:
              type: string
              maxLength: 50
            version:
              type: integer
            status:
              type: string
              enum:
                - DRAFT
                - ACTIVE
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
    ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - message
      properties:
        message:
          type: string
          description: error description
          maxLength: 500
    PricePlanType:
      type: string
      description: Type of price plan
      enum:
        - BILLING
        - PURCHASE
    PricingCycleConfig:
      type: object
      description: Represents configurations related to pricing cycle
      required:
        - interval
        - gracePeriod
      properties:
        interval:
          $ref: '#/components/schemas/PricingCycleInterval'
        startOffset:
          type: object
          description: >
            Represents the start of pricing cycle in terms of
             - dayOffset - number of days from beginning of week / month and
             - monthOffset - number of months from beginning of interval (quarter, half-year or year)
            Note: If a day with offset doesn't exist for a month, closest
            previous day is considered

            Examples:

            WEEKLY -
              - {dayOffset: 1, monthOffset: NIL} - First day of every week (Monday)
              - {dayOffset: 3, monthOffset: NIL} - 3rd day of every week (Wednesday)
              - {dayOffset: LAST, monthOffset: NIL} - Last day of every week (Sunday)
            MONTHLY -
              - {dayOffset: 1, monthOffset: NIL} - First day of every month
              - {dayOffset: 12, monthOffset: NIL} - 12th of every month
              - {dayOffset: 28, monthOffset: NIL} - 28th of every month. i.e, 28th of Jan, 28th of Feb, ...
              - {dayOffset: 30, monthOffset: NIL} - 30th of every month. i.e, 28th of Jan, 28th of Feb, ...
              - {dayOffset: LAST, monthOffset: NIL} - Last day of every month. i.e, 31st of Jan, 28th of Feb, ...
            QUARTERLY
              - {dayOffset: 15, monthOffset: FIRST} - 15th Jan, 15th Apr, 15th Jul and 15th Oct
              - {dayOffset: 15, monthOffset: 2} - 15th Feb, 15th May, 15th Aug and 15th Nov
              - {dayOffset: 15, monthOffset: LAST} - 15th Mar, 15th Jun, 15th Sep and 15th Dec
              - {dayOffset: LAST, monthOffset: FIRST} - 31st Jan, 30th Apr, 30th Jul and 31th Oct
            HALF_YEARLY
              - {dayOffset: 15, monthOffset: FIRST} - 15th Jan and 15th Jul
              - {dayOffset: 15, monthOffset: 4} - 15th Apr and 15th Oct
              - {dayOffset: 15, monthOffset: LAST} - 15th Jun and 15th Dec
            ANNUALLY
              - {dayOffset: 15, monthOffset: FIRST} - 15th Jan
              - {dayOffset: 15, monthOffset: 1} - 15th Jan
              - {dayOffset: LAST, monthOffset: 2} - 29th Feb on Leap year, 28th otherwise 
              - {dayOffset: 15, monthOffset: 8} - 15th Aug
              - {dayOffset: 15, monthOffset: LAST} - 15th Dec
          required:
            - dayOffset
            - monthOffset
          properties:
            dayOffset:
              type: string
              description: >
                If interval is WEEKLY, min: "1" and max: "7" as strings. Spl.
                string allowed: LAST

                Otherwise, min: "1" and max: "31" as strings. Spl. string
                allowed: LAST
            monthOffset:
              type: string
              description: >
                min: "1" and max: "12". Spl. string allowed: FIRST / LAST.

                For QUARTERLY only 1 - 3 is allowed and for HALF_YEARLY 1 - 6.
                This being an optional field, shouldn't be passed for MONTHLY.
        gracePeriod:
          type: integer
          description: >
            Togai allows you to ingest past dated events that will be processed
            by a pricing cycle till the end grace period. 

            For example: Pricing cycle is Monthly from 1st to 30th and
            gracePeriod is 5 days which next month 1 to 5th date, you can ingest
            past dated events during this grace period.
          format: int32
          example: 3
        anniversaryCycle:
          type: boolean
          description: >
            Togai calculates the startOffsets based on the date of association
            instead of requiring from the user and 

            these offsets will be applied as an override if this flag is
            enabled.

            Examples:

            WEEKLY -
              - 23/10/2023 (Monday) - {dayOffset: 1, monthOffset: NIL} 
              - 25/10/2023 (Wednesday) - {dayOffset: 3, monthOffset: NIL} 
              - 29/10/2023 (Sunday) - {dayOffset: 7, monthOffset: NIL}
            MONTHLY -
              - 1st Oct - {dayOffset: 1, monthOffset: NIL}
              - 12th Oct - {dayOffset: 12, monthOffset: NIL}
              - 28th Oct - {dayOffset: 28, monthOffset: NIL}
              - 30th Oct - {dayOffset: 30, monthOffset: NIL}
              - 31th Oct - {dayOffset: LAST, monthOffset: NIL}
            QUARTERLY
              - 15th Jan, 15th Apr, 15th Jul and 15th Oct - {dayOffset: 15, monthOffset: 1}
              - 15th Feb, 15th May, 15th Aug and 15th Nov - {dayOffset: 15, monthOffset: 2} 
              - 15th Mar, 15th Jun, 15th Sep and 15th Dec - {dayOffset: 15, monthOffset: 3}
            HALF_YEARLY
              - 15th Jan and 15th Jul - {dayOffset: 15, monthOffset: 1} 
              - 15th Apr and 15th Oct - {dayOffset: 15, monthOffset: 4} 
              - 15th Jun and 15th Dec - {dayOffset: 15, monthOffset: 6}
            ANNUALLY
              - 15th Jan - {dayOffset: 15, monthOffset: 1}
              - 29th Feb on Leap year  - {dayOffset: LAST, monthOffset: 2}
              - 28th Feb  - {dayOffset: LAST, monthOffset: 2}
              - 15th Aug - {dayOffset: 15, monthOffset: 8}
              - 15th Dec - {dayOffset: 15, monthOffset: 12}
    PricingCycleInterval:
      type: string
      description: >-
        Interval field allow you to define the billing interval you would like
        to set
      enum:
        - WEEKLY
        - MONTHLY
        - QUARTERLY
        - HALF_YEARLY
        - ANNUALLY
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Bearer <credential>

````