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

# Create Subscription Plan

> Create a new subscription plan (merchant only)

Create a new subscription plan for your business.


## OpenAPI

````yaml POST /subscriptions/plans
openapi: 3.0.3
info:
  title: OraFi Merchant API
  description: Seamless crypto payments API for merchants
  version: 1.0.0
  contact:
    name: OraFi Support
    email: support@orafi.app
servers:
  - url: https://api.orafi.app/v1
    description: Production server
  - url: http://localhost:3000/v1
    description: Local development server
security: []
tags:
  - name: Paylinks
    description: Paylink management endpoints
  - name: Payments
    description: Payment creation and verification endpoints
  - name: Customers
    description: Customer management endpoints
  - name: Transactions
    description: Transaction retrieval and payout endpoints
  - name: Refunds
    description: Refund management endpoints
  - name: Webhooks
    description: Webhook registration and management
  - name: Profile
    description: Business profile settings
  - name: Settlements
    description: Settlement account management
  - name: Fiat
    description: Fiat-related endpoints
  - name: Business
    description: Business mode and settings
  - name: Notifications
    description: Notification preferences
  - name: Subscriptions
    description: Subscription plans and customer subscriptions
paths:
  /subscriptions/plans:
    post:
      tags:
        - Subscriptions
      summary: Create a subscription plan
      description: Create a new subscription plan (merchant only)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSubscriptionPlanRequest'
      responses:
        '201':
          description: Subscription plan created
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Subscription plan created
                  data:
                    $ref: '#/components/schemas/SubscriptionPlan'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - apiKey: []
components:
  schemas:
    CreateSubscriptionPlanRequest:
      type: object
      properties:
        name:
          type: string
        duration:
          type: string
          enum:
            - WEEKLY
            - MONTHLY
            - SIX_MONTHS
            - YEARLY
        amount:
          description: Plan amount
          type: number
          example: 9.99
        trialDays:
          description: Number of days to offer as trial before first payment
          type: integer
          example: 5
        currency:
          description: Currency code (3-letter) for the plan
          type: string
          example: USDC
      required:
        - name
        - duration
        - amount
        - currency
    SubscriptionPlan:
      type: object
      properties:
        id:
          description: Subscription plan unique identifier
          type: string
          example: plan_abc123
        name:
          description: Plan name
          type: string
          example: Basic Monthly
        duration:
          description: Duration of the plan
          type: string
          enum:
            - WEEKLY
            - MONTHLY
            - SIX_MONTHS
            - YEARLY
        amount:
          description: Plan amount
          type: number
          example: 9.99
        currency:
          description: Currency code for the plan amount
          type: string
          example: USDC
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
  responses:
    BadRequest:
      description: Bad request - Invalid input or validation error
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: false
              message:
                type: string
                example: Validation error message
    Unauthorized:
      description: Unauthorized - Missing or invalid API key
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: false
              message:
                type: string
                example: Unauthorized access
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for merchant authentication required for most endpoints

````