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

# Grant customer credit

> Grant monetary credit in one currency. Credit is applied FIFO before tax to eligible recurring invoices.

Grant monetary credit in one currency. Credit is applied FIFO before tax to eligible recurring invoices.


## OpenAPI

````yaml /openapi/es/rest/2026-08-27.json post /customers/{id}/credits
openapi: 3.1.0
info:
  title: Commet API
  version: '2026-08-27'
  description: Billing and payments API for SaaS and AI products.
servers:
  - url: https://commet.co/api/v1
security:
  - ApiKeyAuth: []
tags:
  - name: Test Clock
    description: >-
      Simulate the passage of time in sandbox to test billing flows. Mirrors
      Stripe test clocks: forward-only and sandbox-only.
  - name: Customers
  - name: Subscriptions
  - name: Plans
  - name: Markets
    description: >-
      Reusable country groups for market-specific prices and selectable price
      variants.
  - name: Offers
  - name: Promo Codes
  - name: Features
  - name: Usage
  - name: Seats
  - name: Quota
  - name: Add-ons
  - name: Portal
  - name: Credit Packs
  - name: Plan Groups
  - name: Invoices
  - name: Payments
    description: >-
      One-time payments with no subscription or plan. Charge a customer's saved
      payment method off-session, or create a payment link the customer opens to
      pay. Tax, invoice, and receipt are handled automatically.
  - name: Transactions
  - name: Webhooks
  - name: API Keys
  - name: Payouts
    description: >-
      Withdraw available balance to your bank and manage the payout account
      (verification + destination bank accounts).
  - name: Provisioning
    description: >-
      Take ownership of an organization an agent provisioned headlessly. The
      agent holds the API keys from the start; a human claims the account
      through a claim link.
paths:
  /customers/{id}/credits:
    post:
      tags:
        - Customers
      summary: Grant customer credit
      description: >-
        Grant monetary credit in one currency. Credit is applied FIFO before tax
        to eligible recurring invoices.
      operationId: create-customer-credit
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Unique key used to safely retry this write for 24 hours without
            applying it twice.
          schema:
            type: string
            minLength: 1
            maxLength: 200
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: Commet-Version
          in: header
          required: false
          description: >-
            API version used by this reference. Send this header to select this
            contract explicitly.
          schema:
            type: string
            default: '2026-08-27'
          example: '2026-08-27'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: integer
                  exclusiveMinimum: 0
                  maximum: 9007199254740991
                  description: Amount in the currency's smallest unit.
                currency:
                  type: string
                  enum:
                    - usd
                    - ars
                    - brl
                    - clp
                    - cop
                    - pen
                    - uyu
                    - pyg
                    - bob
                    - mxn
                    - cad
                    - eur
                    - gbp
                    - jpy
                    - cny
                    - krw
                    - hkd
                    - sgd
                    - twd
                    - inr
                    - thb
                reason:
                  type: string
                  minLength: 1
                  maxLength: 500
                expiresAt:
                  anyOf:
                    - type: string
                      format: date-time
                    - type: 'null'
              required:
                - amount
                - currency
                - reason
      responses:
        '201':
          description: Success
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
            RateLimit-Limit:
              description: Maximum number of requests allowed in the current window.
              schema:
                type: string
            RateLimit-Remaining:
              description: Requests remaining in the current window.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerCredit'
              example:
                id: cc_1a2b3c4d
                amount: 500
                appliedAmount: 0
                reversedAmount: 0
                revokedAmount: 0
                remainingAmount: 500
                currency: usd
                reason: Service credit
                source: api
                expiresAt: null
                createdAt: '2026-09-07T12:00:00.000Z'
                object: customer_credit
                livemode: false
        '400':
          description: Bad request
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: validation_error
                  code: validation_error
                  message: The request contains an invalid parameter.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/validation_error.md
        '401':
          description: Unauthorized
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: authentication_error
                  code: unauthorized
                  message: A valid API key is required.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/unauthorized.md
        '403':
          description: Forbidden
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: authentication_error
                  code: forbidden
                  message: You do not have permission to perform this operation.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/forbidden.md
        '404':
          description: Not found
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: not_found_error
                  code: not_found
                  message: The requested resource was not found.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/not_found.md
        '409':
          description: Conflict
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: conflict_error
                  code: idempotency_in_progress
                  message: >-
                    A request with this idempotency key is still being
                    processed.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_in_progress.md
        '429':
          description: Too many requests
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
            RateLimit-Limit:
              description: Maximum number of requests allowed in the current window.
              schema:
                type: string
            RateLimit-Remaining:
              description: Requests remaining in the current window.
              schema:
                type: string
            RateLimit-Reset:
              description: Seconds until the rate limit window resets.
              schema:
                type: string
            Retry-After:
              description: Seconds to wait before retrying the request.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: rate_limit_error
                  code: rate_limited
                  message: >-
                    Too many requests. Retry after the interval specified in the
                    Retry-After header.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/rate_limited.md
        '500':
          description: Internal server error
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: internal_error
                  code: internal_error
                  message: An unexpected error occurred while processing the request.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/internal_error.md
        '503':
          description: Service unavailable
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: internal_error
                  code: idempotency_unavailable
                  message: >-
                    Idempotency storage is temporarily unavailable. Retry with
                    the same idempotency key.
                  doc_url: >-
                    https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_unavailable.md
      x-codeSamples:
        - lang: typescript
          label: TypeScript
          source: |-
            import { Commet } from "@commet/node";

            const commet = new Commet({ apiKey: "ck_xxx" });

            const customerCredit = await commet.customers.createCredit({
              id: "cus_xxx",
              amount: 5000,
              currency: "usd",
              reason: "Customer requested",
            });
        - lang: python
          label: Python
          source: |-
            from commet import Commet

            commet = Commet("ck_xxx")

            customer_credit = commet.customers.create_credit(
                "cus_xxx",
                amount=5000,
                currency="usd",
                reason="Customer requested",
            )
        - lang: go
          label: Go
          source: "client, err := commet.New(\"ck_xxx\")\nif err != nil {\n\tlog.Fatal(err)\n}\nctx := context.Background()\n\ncustomerCredit, err := client.Customers.CreateCredit(ctx, \"cus_xxx\", &commet.CreateCustomerCreditParams{\n\tAmount: 5000,\n\tCurrency: \"usd\",\n\tReason: \"Customer requested\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import co.commet.Commet;
            import co.commet.params.CreateCustomerCreditParams;

            var commet = Commet.builder().apiKey("ck_xxx").build();

            var customerCredit = commet.customers().createCredit(
                "cus_xxx",
                CreateCustomerCreditParams.builder(5000L, "usd", "Customer requested").build()
            );
        - lang: php
          label: PHP
          source: |-
            use Commet\Commet;

            $commet = new Commet('ck_xxx');

            $customerCredit = $commet->customers->createCredit(
                id: 'cus_xxx',
                amount: 5000,
                currency: 'usd',
                reason: 'Customer requested',
            );
components:
  headers:
    RequestId:
      description: >-
        Server-generated identifier that correlates this response with Platform
        logs.
      schema:
        type: string
        format: uuid
  schemas:
    CustomerCredit:
      type: object
      properties:
        id:
          type: string
        amount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Original grant amount in the currency's smallest unit.
        appliedAmount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        reversedAmount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        revokedAmount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        remainingAmount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        currency:
          type: string
        reason:
          type: string
        source:
          type: string
          enum:
            - dashboard
            - api
            - plan_change
            - migration
        expiresAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        createdAt:
          type: string
          format: date-time
        object:
          type: string
          const: customer_credit
        livemode:
          type: boolean
      required:
        - id
        - amount
        - appliedAmount
        - reversedAmount
        - revokedAmount
        - remainingAmount
        - currency
        - reason
        - source
        - expiresAt
        - createdAt
        - object
        - livemode
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
            code:
              type: string
            message:
              type: string
            param:
              type: string
            details: {}
            doc_url:
              type: string
          required:
            - type
            - code
            - message
            - doc_url
          additionalProperties: false
      required:
        - error
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

## Related topics

- [Credits, Credit Packs y Customer Credits](/docs/es/how-do-credits-credit-packs-and-customer-credits-differ.md)
- [Customer Credits](/docs/es/customer-credits.md)
- [List customer credits](/docs/es/api-reference/customers/list-customer-credits.md)
- [Revoke remaining customer credit](/docs/es/api-reference/customers/revoke-customer-credit.md)
- [Otorgar Acceso Temporal a un Plan](/docs/es/plan-grants.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.