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

# Create payment concept

> Creates a new product or service in the catalog.



## OpenAPI

````yaml /openapi.yaml post /v1/payment-concepts
openapi: 3.0.3
info:
  title: Quentli REST API
  version: 1.0.0
  description: OpenAPI spec for Quentli REST endpoints.
servers:
  - url: https://api.quentli.com
    description: Production API
  - url: https://api.staging.quentli.com
    description: Staging API for production-like validation
  - url: https://api.demo.quentli.com
    description: Demo API hostname served by staging
security:
  - organizationApiKey: []
tags:
  - name: Auth
  - name: Billing
  - name: Catalog
  - name: Customers
  - name: Invoices
  - name: Payment Methods
  - name: Payment Sessions
  - name: Payments
  - name: Subscriptions
  - name: Tax Invoices
  - name: Webhooks
paths:
  /v1/payment-concepts:
    post:
      tags:
        - Catalog
      summary: Create payment concept
      description: Creates a new product or service in the catalog.
      operationId: payment_concepts_create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentConceptArgs'
      responses:
        '200':
          description: Payment concept created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePaymentConceptPayload'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserError'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserError'
        '403':
          description: Permission denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserError'
components:
  schemas:
    CreatePaymentConceptArgs:
      type: object
      properties:
        input:
          type: object
          properties:
            displayName:
              type: string
              minLength: 1
              maxLength: 140
              description: Display name of the concept shown to customers.
              example: Colegiatura
            sku:
              type: string
              nullable: true
              minLength: 1
              description: Optional unique SKU for internal identification.
              example: COL-PREP-001
            description:
              type: string
              nullable: true
              minLength: 1
              description: Optional longer description of the product or service.
              example: Colegiatura mensual de preparatoria
            amount:
              type: number
              minimum: 0
              maximum: 99999999999
              description: Unit price in minor currency units (e.g. cents).
              example: 150000
            amountEditable:
              type: boolean
              description: Whether customers can customize the price.
              example: false
            currency:
              type: string
              nullable: true
              description: ISO 4217 currency code. Defaults to the organization currency.
              example: MXN
            quantityEditable:
              type: boolean
              description: Whether customers can customize the quantity.
              example: false
            oneOff:
              type: boolean
              description: Whether this concept is a one-time custom charge.
              example: false
            active:
              type: boolean
              description: Whether this concept is immediately available for use.
              example: true
            groupId:
              type: string
              nullable: true
              description: Optional identifier of the group to assign this concept to.
              example: null
            metadata:
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                    minLength: 1
                    description: Metadata key name.
                  value:
                    type: string
                    minLength: 1
                    description: Metadata value.
                required:
                  - key
                  - value
              description: Optional key-value metadata entries to attach to the concept.
              example: []
            collectionInterval:
              type: string
              enum:
                - DAY
                - WEEK
                - FORTNIGHT
                - MONTH
                - YEAR
              nullable: true
              description: >-
                Time interval unit for recurring charges (deprecated: use
                recurrentDetail instead).
              example: MONTH
            chargeEach:
              type: number
              nullable: true
              minimum: 0
              description: >-
                Number of intervals between charges (deprecated: use
                recurrentDetail instead).
              example: 1
            toleranceDays:
              type: number
              nullable: true
              minimum: 0
              description: >-
                Grace days after due date (deprecated: use recurrentDetail
                instead).
              example: null
            recurrentDetail:
              type: object
              properties:
                collectionInterval:
                  type: string
                  enum:
                    - DAY
                    - WEEK
                    - FORTNIGHT
                    - MONTH
                    - YEAR
                  description: Time interval unit for recurring charges.
                  example: MONTH
                chargeEach:
                  type: number
                  minimum: 0
                  description: Number of intervals between charges.
                  example: 1
                toleranceDays:
                  type: number
                  nullable: true
                  minimum: 0
                  description: Grace days after the due date before the invoice expires.
                  example: 5
              required:
                - collectionInterval
                - chargeEach
              additionalProperties: false
              description: Recurrence configuration for a recurring concept.
              example: null
            taxInfo:
              type: object
              properties:
                description:
                  type: string
                  description: Tax description override.
                productKey:
                  type: string
                  description: SAT product key.
                unitKey:
                  type: string
                  description: SAT unit key.
                unitName:
                  type: string
                  description: Unit name override.
                taxRate:
                  type: number
                  minimum: 0
                  maximum: 1
                  description: Tax rate as a decimal between 0 and 1.
                taxability:
                  type: string
                  description: SAT taxability code.
              additionalProperties: false
              description: >-
                Optional tax configuration for organizations with tax invoice
                generation enabled.
          required:
            - displayName
            - amount
          additionalProperties: false
      required:
        - input
      additionalProperties: false
      description: Request body for creating a payment concept.
    CreatePaymentConceptPayload:
      type: object
      properties:
        paymentConcept:
          $ref: '#/components/schemas/PaymentConcept'
      required:
        - paymentConcept
      description: Newly created payment concept.
    UserError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
          required:
            - message
      required:
        - error
      additionalProperties: false
      description: Standard user-facing error response envelope.
    PaymentConcept:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the payment concept.
          example: pc_1234567890abcdefghij
        createdAt:
          anyOf:
            - type: string
              description: Date string
            - type: string
              format: date-time
              description: Date object
          description: When the concept was created.
          example: '2025-01-01T00:00:00.000Z'
        updatedAt:
          anyOf:
            - type: string
              description: Date string
            - type: string
              format: date-time
              description: Date object
          description: When the concept was last updated.
          example: '2025-01-01T00:00:00.000Z'
        displayName:
          type: string
          description: Name of the product or service shown to customers.
          example: Colegiatura
        description:
          type: string
          nullable: true
          description: Optional longer description of the product or service.
          example: Colegiatura mensual de preparatoria
        amount:
          type: number
          description: Unit price in minor currency units (e.g. cents).
          example: 150000
        currency:
          type: string
          description: ISO 4217 currency code.
          example: MXN
        organizationId:
          type: string
          description: Identifier of the owning organization.
          example: org_1234567890abcdefghij
        active:
          type: boolean
          description: Whether this concept is currently available for use.
          example: true
        sku:
          type: string
          nullable: true
          description: Optional SKU for internal identification.
          example: COL-PREP-001
        recurrentDetailId:
          type: string
          nullable: true
          description: Identifier of the recurrence configuration, if applicable.
          example: null
        amountEditable:
          type: boolean
          description: Whether customers can customize the price.
          example: false
        quantityEditable:
          type: boolean
          description: Whether customers can customize the quantity.
          example: false
        archivedAt:
          anyOf:
            - type: string
              description: Date string
            - type: string
              format: date-time
              description: Date object
            - nullable: true
          description: Date and time when the concept was archived, if any.
          example: null
        oneOff:
          type: boolean
          description: Whether this concept is a one-time custom charge.
          example: false
        groupId:
          type: string
          nullable: true
          description: Identifier of the group this concept belongs to, if any.
          example: null
        recurrentDetail:
          type: object
          nullable: true
          properties:
            collectionInterval:
              type: string
              enum:
                - DAY
                - WEEK
                - FORTNIGHT
                - MONTH
                - YEAR
              description: Time interval unit for recurring charges.
              example: MONTH
            chargeEach:
              type: number
              description: Number of intervals between charges.
              example: 1
            toleranceDays:
              type: number
              nullable: true
              description: Grace days after the due date before the invoice expires.
              example: 5
          required:
            - collectionInterval
            - chargeEach
          description: Recurrence configuration when the concept is a recurring charge.
          example: null
      required:
        - id
        - createdAt
        - updatedAt
        - displayName
        - description
        - amount
        - currency
        - organizationId
        - active
        - sku
        - recurrentDetailId
        - amountEditable
        - quantityEditable
        - archivedAt
        - oneOff
        - groupId
      description: A product or service template used to define invoice line items.
  securitySchemes:
    organizationApiKey:
      type: http
      scheme: bearer
      description: 'Organization API key using `Authorization: Bearer sk_...`.'

````