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

# Cria uma nova versão da regra de comissão

> Cria uma nova versão da regra de comissão do programa. As regras são imutáveis e versionadas: este endpoint não altera versões anteriores, apenas publica uma nova versão corrente.



## OpenAPI

````yaml /openapi.json post /programs/{programId}/commission-rules
openapi: 3.1.0
info:
  title: Repass API
  description: >-
    API pública do Repass — plataforma de gestão de afiliados: programas, links,
    tracking, atribuição, conversões, comissões, payouts, fiscal (BR),
    reprocessamento, event store e webhooks.
  version: 0.1.0
servers:
  - url: https://api.userepass.com
    description: Produção
security:
  - bearerAuth: []
  - apiKeyAuth: []
tags:
  - name: Profile
    description: Perfil do usuário autenticado.
  - name: Guide
    description: >-
      Guia de onboarding do painel: estado de tours, telas visitadas e
      preferências por usuário e organização.
  - name: Portal
    description: >-
      Portal do afiliado: sessão por identidade de afiliado (sem org), convites
      e claim.
  - name: Programs
    description: 'Programas de afiliados: configuração, atribuição, hold e tiers.'
  - name: Commission Rules
    description: Regras de comissão versionadas (imutáveis) por programa.
  - name: Affiliates
    description: 'Ciclo de vida do afiliado: cadastro, aprovação, tier, saldo.'
  - name: Terms
    description: Termos do programa, versionados.
  - name: Materials
    description: >-
      Materiais (criativos) do programa: upload pelo gestor e download pelos
      afiliados.
  - name: Links
    description: Links rastreáveis e domínios de redirecionamento.
  - name: Coupons
    description: Cupons de afiliado e sync com gateway.
  - name: Pagamentos por PIX
    description: Habilitação de pagamentos por PIX (onboarding e documentos).
  - name: Tracking
    description: Endpoints públicos de redirect e registro de cliques.
  - name: Clicks
    description: Consulta de cliques e estatísticas de link.
  - name: Conversions
    description: 'Conversões: ingestão S2S, atribuição, matching, fraude e auditoria.'
  - name: Commissions
    description: Comissões calculadas, holds, aprovação, void e clawback.
  - name: Payouts
    description: Ciclos de pagamento, prévia, execução e comprovantes.
  - name: Invoices
    description: Notas fiscais (PJ), envio e validação (BR).
  - name: Fraud
    description: Fila de revisão e decisões de fraude.
  - name: Reprocess
    description: Reprocessamento com dry-run obrigatório e relatório de impacto.
  - name: Events
    description: Histórico de eventos para auditoria e consulta.
  - name: Notifications
    description: >-
      Notificações ao operador (falhas de sincronização, payouts e afins) —
      registro in-app espelhado por e-mail aos owners/admins.
  - name: Webhooks
    description: Endpoints de webhook, entregas, retries e dead-letter.
  - name: Ingest
    description: Ingestão de eventos de cobrança (S2S e gateways).
  - name: Settings
    description: Configurações por organização (políticas e integrações).
  - name: Billing
    description: 'Plano e cobrança: contadores de uso da organização para o painel.'
  - name: Dashboard
    description: >-
      Métricas agregadas da operação (receita, top afiliados, conversões,
      comissões, novos afiliados) para a home e os relatórios do gestor.
  - name: Health
    description: Liveness do serviço.
paths:
  /programs/{programId}/commission-rules:
    post:
      tags:
        - Commission Rules
      summary: Cria uma nova versão da regra de comissão
      description: >-
        Cria uma nova versão da regra de comissão do programa. As regras são
        imutáveis e versionadas: este endpoint não altera versões anteriores,
        apenas publica uma nova versão corrente.
      operationId: createCommissionRule
      parameters:
        - schema:
            type: string
            pattern: ^prog_[0-9A-HJKMNP-TV-Z]{26}$
          in: path
          name: programId
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    type:
                      type: string
                      description: Regra por percentual sobre o valor da venda.
                      enum:
                        - percentage
                    percentage:
                      type: number
                      minimum: 0
                      maximum: 100
                      multipleOf: 0.01
                      description: Percentual de comissão aplicado à venda.
                      example: 15
                    recurrence:
                      default:
                        kind: one_time
                      description: >-
                        Política de recorrência da comissão. Default: `one_time`
                        (pagamento único).
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão paga uma única vez, na primeira
                                conversão.
                              enum:
                                - one_time
                          required:
                            - kind
                          description: 'Recorrência única: comissão paga apenas uma vez.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão paga em todas as renovações,
                                indefinidamente.
                              enum:
                                - lifetime
                          required:
                            - kind
                          description: 'Recorrência vitalícia: comissão em todos os ciclos.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: Comissão paga por um número fixo de meses.
                              enum:
                                - months
                            months:
                              type: integer
                              minimum: 1
                              maximum: 120
                              description: Quantidade de meses em que a comissão é paga.
                              example: 12
                          required:
                            - kind
                            - months
                          description: 'Recorrência por prazo: comissão paga por N meses.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão com percentual que varia por ciclo de
                                cobrança.
                              enum:
                                - decreasing
                            steps:
                              minItems: 1
                              type: array
                              items:
                                type: object
                                properties:
                                  cycle:
                                    type: integer
                                    minimum: 1
                                    maximum: 9007199254740991
                                    description: Número do ciclo de cobrança (começa em 1).
                                    example: 1
                                  percentage:
                                    type: number
                                    minimum: 0
                                    maximum: 100
                                    multipleOf: 0.01
                                    description: >-
                                      Percentual de comissão aplicado neste
                                      ciclo.
                                    example: 15
                                required:
                                  - cycle
                                  - percentage
                              description: Degraus de percentual por ciclo (pelo menos 1).
                          required:
                            - kind
                            - steps
                          description: >-
                            Recorrência decrescente: percentuais diferentes por
                            ciclo de cobrança.
                    applicableProductIds:
                      description: >-
                        IDs dos produtos aos quais a regra se aplica. Se
                        omitido, vale para todos os produtos.
                      example:
                        - prod_01J9ZK8QF3N2P5R7T9V1W3X5Y7
                      minItems: 1
                      type: array
                      items:
                        type: string
                        minLength: 1
                  required:
                    - type
                    - percentage
                - type: object
                  properties:
                    type:
                      type: string
                      description: Regra de valor fixo por conversão.
                      enum:
                        - fixed
                    fixedAmountCents:
                      type: integer
                      minimum: 1
                      maximum: 9007199254740991
                      description: >-
                        Valor fixo de comissão por conversão, em centavos. Ex.:
                        1990 = R$ 19,90.
                      example: 1990
                    recurrence:
                      default:
                        kind: one_time
                      description: >-
                        Política de recorrência da comissão. Default: `one_time`
                        (pagamento único).
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão paga uma única vez, na primeira
                                conversão.
                              enum:
                                - one_time
                          required:
                            - kind
                          description: 'Recorrência única: comissão paga apenas uma vez.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão paga em todas as renovações,
                                indefinidamente.
                              enum:
                                - lifetime
                          required:
                            - kind
                          description: 'Recorrência vitalícia: comissão em todos os ciclos.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: Comissão paga por um número fixo de meses.
                              enum:
                                - months
                            months:
                              type: integer
                              minimum: 1
                              maximum: 120
                              description: Quantidade de meses em que a comissão é paga.
                              example: 12
                          required:
                            - kind
                            - months
                          description: 'Recorrência por prazo: comissão paga por N meses.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão com percentual que varia por ciclo de
                                cobrança.
                              enum:
                                - decreasing
                            steps:
                              minItems: 1
                              type: array
                              items:
                                type: object
                                properties:
                                  cycle:
                                    type: integer
                                    minimum: 1
                                    maximum: 9007199254740991
                                    description: Número do ciclo de cobrança (começa em 1).
                                    example: 1
                                  percentage:
                                    type: number
                                    minimum: 0
                                    maximum: 100
                                    multipleOf: 0.01
                                    description: >-
                                      Percentual de comissão aplicado neste
                                      ciclo.
                                    example: 15
                                required:
                                  - cycle
                                  - percentage
                              description: Degraus de percentual por ciclo (pelo menos 1).
                          required:
                            - kind
                            - steps
                          description: >-
                            Recorrência decrescente: percentuais diferentes por
                            ciclo de cobrança.
                    applicableProductIds:
                      description: >-
                        IDs dos produtos aos quais a regra se aplica. Se
                        omitido, vale para todos os produtos.
                      example:
                        - prod_01J9ZK8QF3N2P5R7T9V1W3X5Y7
                      minItems: 1
                      type: array
                      items:
                        type: string
                        minLength: 1
                  required:
                    - type
                    - fixedAmountCents
                - type: object
                  properties:
                    type:
                      type: string
                      description: Regra escalonada por faixas de volume de conversões.
                      enum:
                        - tiered
                    tiers:
                      minItems: 1
                      type: array
                      items:
                        type: object
                        properties:
                          minCount:
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                            description: >-
                              Volume mínimo de conversões para a faixa valer. A
                              faixa-base usa `minCount: 0`.
                            example: 0
                          percentage:
                            description: >-
                              Percentual de comissão da faixa (alternativo a
                              `fixedAmountCents`).
                            type: number
                            minimum: 0
                            maximum: 100
                            multipleOf: 0.01
                            example: 15
                          fixedAmountCents:
                            description: >-
                              Valor fixo de comissão da faixa, em centavos
                              (alternativo a `percentage`). Ex.: 1990 = R$
                              19,90.
                            example: 1990
                            type: integer
                            minimum: 0
                            maximum: 9007199254740991
                        required:
                          - minCount
                      description: >-
                        Faixas de comissão por volume. Exige uma faixa-base com
                        `minCount: 0`.
                    recurrence:
                      default:
                        kind: one_time
                      description: >-
                        Política de recorrência da comissão. Default: `one_time`
                        (pagamento único).
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão paga uma única vez, na primeira
                                conversão.
                              enum:
                                - one_time
                          required:
                            - kind
                          description: 'Recorrência única: comissão paga apenas uma vez.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão paga em todas as renovações,
                                indefinidamente.
                              enum:
                                - lifetime
                          required:
                            - kind
                          description: 'Recorrência vitalícia: comissão em todos os ciclos.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: Comissão paga por um número fixo de meses.
                              enum:
                                - months
                            months:
                              type: integer
                              minimum: 1
                              maximum: 120
                              description: Quantidade de meses em que a comissão é paga.
                              example: 12
                          required:
                            - kind
                            - months
                          description: 'Recorrência por prazo: comissão paga por N meses.'
                        - type: object
                          properties:
                            kind:
                              type: string
                              description: >-
                                Comissão com percentual que varia por ciclo de
                                cobrança.
                              enum:
                                - decreasing
                            steps:
                              minItems: 1
                              type: array
                              items:
                                type: object
                                properties:
                                  cycle:
                                    type: integer
                                    minimum: 1
                                    maximum: 9007199254740991
                                    description: Número do ciclo de cobrança (começa em 1).
                                    example: 1
                                  percentage:
                                    type: number
                                    minimum: 0
                                    maximum: 100
                                    multipleOf: 0.01
                                    description: >-
                                      Percentual de comissão aplicado neste
                                      ciclo.
                                    example: 15
                                required:
                                  - cycle
                                  - percentage
                              description: Degraus de percentual por ciclo (pelo menos 1).
                          required:
                            - kind
                            - steps
                          description: >-
                            Recorrência decrescente: percentuais diferentes por
                            ciclo de cobrança.
                    applicableProductIds:
                      description: >-
                        IDs dos produtos aos quais a regra se aplica. Se
                        omitido, vale para todos os produtos.
                      example:
                        - prod_01J9ZK8QF3N2P5R7T9V1W3X5Y7
                      minItems: 1
                      type: array
                      items:
                        type: string
                        minLength: 1
                  required:
                    - type
                    - tiers
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: >-
                      Identificador único da regra de comissão (prefixo `comm_`
                      + ULID).
                    example: comm_01J9ZK8QF3N2P5R7T9V1W3X5Y7
                  programId:
                    type: string
                    description: Identificador do programa ao qual a regra pertence.
                    example: prog_01J9ZK8QF3N2P5R7T9V1W3X5Y7
                  version:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                    description: >-
                      Versão da regra. Cada alteração cria uma nova versão
                      (regras são imutáveis).
                    example: 1
                  programTierId:
                    anyOf:
                      - type: string
                        pattern: ^tier_[0-9A-HJKMNP-TV-Z]{26}$
                      - type: 'null'
                    description: >-
                      Dono da regra: `null` = regra padrão do programa;
                      preenchido = histórico próprio do tier (prefixo `tier_` +
                      ULID).
                    example: null
                  type:
                    type: string
                    enum:
                      - percentage
                      - fixed
                      - tiered
                    description: >-
                      Tipo da regra: `percentage` (percentual sobre a venda),
                      `fixed` (valor fixo por conversão) ou `tiered` (faixas por
                      volume).
                    example: percentage
                  percentage:
                    anyOf:
                      - type: number
                        minimum: 0
                        maximum: 100
                        multipleOf: 0.01
                        description: >-
                          Percentual de comissão (0 a 100, com até 2 casas
                          decimais).
                        example: 15
                      - type: 'null'
                    description: Percentual de comissão (apenas para regras `percentage`).
                  fixedAmountCents:
                    anyOf:
                      - type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      - type: 'null'
                    description: Valor fixo em centavos (apenas para regras `fixed`).
                    example: 1990
                  recurrence:
                    oneOf:
                      - type: object
                        properties:
                          kind:
                            type: string
                            description: >-
                              Comissão paga uma única vez, na primeira
                              conversão.
                            enum:
                              - one_time
                        required:
                          - kind
                        additionalProperties: false
                        description: 'Recorrência única: comissão paga apenas uma vez.'
                      - type: object
                        properties:
                          kind:
                            type: string
                            description: >-
                              Comissão paga em todas as renovações,
                              indefinidamente.
                            enum:
                              - lifetime
                        required:
                          - kind
                        additionalProperties: false
                        description: 'Recorrência vitalícia: comissão em todos os ciclos.'
                      - type: object
                        properties:
                          kind:
                            type: string
                            description: Comissão paga por um número fixo de meses.
                            enum:
                              - months
                          months:
                            type: integer
                            minimum: 1
                            maximum: 120
                            description: Quantidade de meses em que a comissão é paga.
                            example: 12
                        required:
                          - kind
                          - months
                        additionalProperties: false
                        description: 'Recorrência por prazo: comissão paga por N meses.'
                      - type: object
                        properties:
                          kind:
                            type: string
                            description: >-
                              Comissão com percentual que varia por ciclo de
                              cobrança.
                            enum:
                              - decreasing
                          steps:
                            minItems: 1
                            type: array
                            items:
                              type: object
                              properties:
                                cycle:
                                  type: integer
                                  minimum: 1
                                  maximum: 9007199254740991
                                  description: Número do ciclo de cobrança (começa em 1).
                                  example: 1
                                percentage:
                                  type: number
                                  minimum: 0
                                  maximum: 100
                                  multipleOf: 0.01
                                  description: Percentual de comissão aplicado neste ciclo.
                                  example: 15
                              required:
                                - cycle
                                - percentage
                              additionalProperties: false
                            description: Degraus de percentual por ciclo (pelo menos 1).
                        required:
                          - kind
                          - steps
                        additionalProperties: false
                        description: >-
                          Recorrência decrescente: percentuais diferentes por
                          ciclo de cobrança.
                    description: Política de recorrência da comissão.
                  tiers:
                    anyOf:
                      - type: array
                        items:
                          type: object
                          properties:
                            minCount:
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                              description: >-
                                Volume mínimo de conversões para a faixa valer.
                                A faixa-base usa `minCount: 0`.
                              example: 0
                            percentage:
                              description: >-
                                Percentual de comissão da faixa (alternativo a
                                `fixedAmountCents`).
                              type: number
                              minimum: 0
                              maximum: 100
                              multipleOf: 0.01
                              example: 15
                            fixedAmountCents:
                              description: >-
                                Valor fixo de comissão da faixa, em centavos
                                (alternativo a `percentage`). Ex.: 1990 = R$
                                19,90.
                              example: 1990
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                          required:
                            - minCount
                          additionalProperties: false
                      - type: 'null'
                    description: Faixas de comissão (apenas para regras `tiered`).
                  applicableProductIds:
                    anyOf:
                      - type: array
                        items:
                          type: string
                      - type: 'null'
                    description: >-
                      IDs dos produtos aos quais a regra se aplica (null =
                      todos).
                  createdAt:
                    description: Data de criação desta versão da regra (ISO-8601).
                    example: '2026-06-13T12:00:00.000Z'
                    type: string
                    format: date-time
                required:
                  - id
                  - programId
                  - version
                  - programTierId
                  - type
                  - percentage
                  - fixedAmountCents
                  - recurrence
                  - tiers
                  - applicableProductIds
                  - createdAt
                additionalProperties: false
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Chave de API (prefixo `rstr_`) enviada como `Authorization: Bearer
        rstr_...`.
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Chave de API (prefixo `rstr_`) enviada no header `x-api-key`.

````