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

# Покупка RPC-плана

> Purchase an RPC plan using account balance. Deducts the balance, creates the order, invoice, payment, and license in a single atomic transaction.



## OpenAPI

````yaml POST /customer/v2/orders/purchase
openapi: 3.0.3
info:
  title: OrbitFlare Customer API
  description: >-
    API documentation for the OrbitFlare Customer API. This API allows
    authenticated customers to manage their licenses, whitelist IPs, reset keys,
    and retrieve associated data. Supports v1 (API key only) and v2 (Bearer
    token or API key) with extended features including device/wallet auth, API
    keys management, profile, Solana USDC balance top-up, and RPC plan
    purchasing.
  version: 2.1.0
servers:
  - url: https://orbitflare.com/api
    description: OrbitFlare Production server
security:
  - api_key: []
tags:
  - name: Auth
    description: Authentication (device flow, wallet signature, session)
  - name: Licenses
    description: License management
  - name: API Keys
    description: API key management
  - name: Profile
    description: User profile and balance
  - name: Invoices
    description: Invoice listing, detail, and balance payment
  - name: Top-Up
    description: Balance top-up via Solana USDC
  - name: RPC Plans
    description: Solana RPC plan catalog
  - name: Orders
    description: Order management (validate, purchase, list)
paths:
  /customer/v2/orders/purchase:
    post:
      tags:
        - Orders
      summary: Purchase RPC Plan
      description: >-
        Purchase an RPC plan using account balance. Deducts the balance, creates
        the order, invoice, payment, and license in a single atomic transaction.
      operationId: purchaseOrder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequest'
      responses:
        '200':
          description: Plan purchased successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                  data:
                    $ref: '#/components/schemas/PurchaseResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
        '402':
          description: Insufficient balance.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Insufficient balance. Please top up first.
                  data:
                    type: object
                    properties:
                      required:
                        type: number
                        format: float
                      balance:
                        type: number
                        format: float
                      shortfall:
                        type: number
                        format: float
        '404':
          description: Product not found or not an RPC plan.
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
      security:
        - bearer_token: []
        - api_key: []
components:
  schemas:
    OrderRequest:
      type: object
      required:
        - product_slug
      properties:
        product_slug:
          type: string
          description: Slug of the RPC plan product.
        billing_period:
          type: string
          enum:
            - monthly
            - quarterly
            - semi-annual
            - annual
          default: monthly
        discount_code:
          type: string
          nullable: true
          description: Optional coupon code.
    PurchaseResponse:
      type: object
      properties:
        order:
          type: object
          properties:
            reference:
              type: string
            status:
              type: string
            total_amount:
              type: number
              format: float
        license:
          type: object
          properties:
            key:
              type: string
            slug:
              type: string
            status:
              type: string
            renewal_date:
              type: string
              format: date-time
        invoice:
          type: object
          properties:
            reference:
              type: string
        new_balance:
          type: number
          format: float
    V2ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
        errors:
          type: object
        error:
          type: string
          description: Error code (e.g. authorization_pending, slow_down)
  securitySchemes:
    api_key:
      type: apiKey
      name: X-ORBIT-KEY
      in: header
      description: API key for v1 and v2 (when not using Bearer token)
    bearer_token:
      type: http
      scheme: bearer
      bearerFormat: Sanctum
      description: Bearer token from device or wallet auth

````