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

# Create a payment link

> Creates a payment link in the `live` or `test` mode of the API key used. The response includes the `url` of the page where your customer pays. The payment link accepts payments until you cancel it or, when `expires_after_seconds` is sent, until it expires.

**`v1`** · Base URL `https://api.fintoc.com/v1`


## OpenAPI

````yaml reference/fintoc-api.json POST /payment_links
openapi: 3.1.0
info:
  title: fintoc-api
  version: v2026-02-01
servers:
  - url: https://api.fintoc.com/v1
security: []
paths:
  /payment_links:
    post:
      tags:
        - Payment links
      summary: Create a payment link
      description: >-
        Creates a payment link in the `live` or `test` mode of the API key used.
        The response includes the `url` of the page where your customer pays.
        The payment link accepts payments until you cancel it or, when
        `expires_after_seconds` is sent, until it expires.
      operationId: payment-links-create
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: integer
                  example: 5000
                  description: >-
                    Amount to collect, in the smallest unit of `currency`. For
                    example, `5000` represents 5000 CLP, since CLP has no minor
                    unit, or 50.00 MXN. Must be greater than `0`.
                currency:
                  type: string
                  enum:
                    - CLP
                    - MXN
                  example: CLP
                  description: >-
                    Three-letter ISO 4217 currency code. One of `CLP` (Chilean
                    peso) or `MXN` (Mexican peso). Case-insensitive.
                business_profile:
                  type: object
                  description: >-
                    **Required if your organization identifies a business
                    profile per payment.** Enrolled merchant on whose behalf you
                    collect the payment, used for category-based billing.
                  properties:
                    category:
                      type: string
                      example: '620200'
                      description: >-
                        Six-character activity code of the enrolled merchant. In
                        Chile, the activity code defined by the tax authority
                        (SII).
                    name:
                      type: string
                      example: Tienda Ejemplo
                      description: >-
                        Name of the enrolled merchant. When set, the checkout
                        shows the name as the recipient of the payment.
                    tax_id:
                      type: string
                      example: '111111111'
                      description: >-
                        Tax identifier of the enrolled merchant. In Chile, a
                        valid RUT (Rol Único Tributario).
                checkout:
                  type: object
                  description: Checkout customization. Supports a single `description` key.
                  properties:
                    description:
                      type: string
                      example: Premium subscription
                      description: Text shown next to the buy button on the payment page.
                customer_email:
                  type: string
                  example: customer@example.com
                  description: >-
                    Email address of your customer, used for transaction
                    notifications, including refunds.
                expires_after_seconds:
                  type: integer
                  example: 86400
                  description: >-
                    Number of seconds after which the payment link expires. Must
                    be greater than `0`. If omitted, the payment link never
                    expires.
                metadata:
                  type: object
                  example:
                    order_id: '1234'
                  description: >-
                    Set of key-value pairs you can attach to the payment link to
                    store additional information in a structured format.
                recipient_account:
                  type: object
                  description: >-
                    **Required if your organization uses the Fintoc Reconciles
                    schema without a default pool account.** Destination bank
                    account for the payments collected with the link. Available
                    only in Chile. Do not send it if your organization uses
                    Fintoc Collects, where Fintoc presets the account for you.
                  properties:
                    holder_id:
                      type: string
                      example: '111111111'
                      description: >-
                        National identifier of the account holder. In Chile, a
                        valid RUT without dots or hyphen.
                    institution_id:
                      type: string
                      example: cl_banco_de_chile
                      description: Identifier of the account's institution.
                    number:
                      type: string
                      example: '123456789'
                      description: Account number, without hyphens or leading zeros.
                    type:
                      type: string
                      enum:
                        - checking_account
                        - savings_account
                        - sight_account
                        - rut_account
                        - line_of_credit
                        - credit_card
                      example: checking_account
                      description: Type of the destination account.
                  required:
                    - holder_id
                    - institution_id
                    - number
                    - type
              required:
                - amount
                - currency
            examples:
              create_payment_link:
                summary: Create a payment link
                value:
                  amount: 5000
                  currency: CLP
                  checkout:
                    description: Premium subscription
                  customer_email: customer@example.com
                  metadata:
                    order_id: '1234'
      responses:
        '201':
          description: >-
            Payment link created. Share the returned `url` with your customer to
            collect the payment.
          content:
            application/json:
              examples:
                payment_link_created:
                  value:
                    id: plink_K2zwNNSxPyx8w3GZ
                    object: payment_link
                    amount: 5000
                    checkout:
                      description: Premium subscription
                    created_at: '2024-04-04T15:23:11.474Z'
                    currency: CLP
                    customer_email: customer@example.com
                    expires_at: null
                    metadata:
                      order_id: '1234'
                    mode: live
                    recipient_account: null
                    status: active
                    url: https://pay.fintoc.com/plink_K2zwNNSxPyx8w3GZ
              schema:
                $ref: '#/components/schemas/payment_link'
        '400':
          description: >-
            Invalid request. One parameter is missing or invalid: `amount` is
            not a positive integer or exceeds the allowed maximum, `currency` is
            not supported, `customer_email` is malformed, or `recipient_account`
            does not match your organization's configuration.
          content:
            application/json:
              examples:
                invalid_amount:
                  value:
                    error:
                      type: invalid_request_error
                      code: invalid_positive_integer
                      param: amount
                      message: >-
                        Invalid positive integer: 0. It should be greater than
                        zero.
                      doc_url: https://docs.fintoc.com/reference/errors
              schema:
                $ref: '#/components/schemas/error_object'
        '401':
          description: Invalid or missing API key.
          content:
            application/json:
              examples:
                invalid_api_key:
                  value:
                    error:
                      type: authentication_error
                      code: invalid_api_key
                      message: 'Invalid API Key: invalid-*oken'
              schema:
                $ref: '#/components/schemas/error_object'
        '402':
          description: No payment method is enabled for your organization.
          content:
            application/json:
              examples:
                no_payment_methods_available:
                  value:
                    error:
                      type: api_error
                      code: payment_required
                      message: >-
                        No payment methods are available for this organization.
                        Please enable at least one payment method.
              schema:
                $ref: '#/components/schemas/error_object'
      security:
        - api_key: []
components:
  schemas:
    payment_link:
      type: object
      properties:
        id:
          type: string
          example: plink_K2zwNNSxPyx8w3GZ
          description: Unique identifier of the payment link.
        object:
          const: payment_link
          description: Type of the object. Always `payment_link`.
        amount:
          type: integer
          example: 5000
          description: >-
            Amount to collect, in the smallest unit of `currency`. For example,
            `5000` represents 5000 CLP, since CLP has no minor unit, or 50.00
            MXN.
        checkout:
          type: object
          example:
            description: Premium subscription
          description: >-
            Checkout customization. The `description` key holds the text shown
            next to the buy button, or `null` when you do not set it.
        created_at:
          type: string
          format: date-time
          example: '2024-04-04T15:23:11.474Z'
          description: ISO 8601 datetime in UTC of when the payment link was created.
        currency:
          type: string
          enum:
            - CLP
            - MXN
          example: CLP
          description: >-
            Three-letter ISO 4217 currency code. One of `CLP` (Chilean peso) or
            `MXN` (Mexican peso).
        customer_email:
          type:
            - string
            - 'null'
          example: customer@example.com
          description: >-
            Email address of your customer, used for transaction notifications.
            `null` when not provided on creation.
        expires_at:
          type:
            - string
            - 'null'
          format: date-time
          example: '2024-04-05T15:23:11.474Z'
          description: >-
            ISO 8601 datetime in UTC of when the payment link expires. `null`
            when the payment link does not expire.
        metadata:
          type: object
          example:
            order_id: '1234'
          description: Set of key-value pairs attached to the payment link on creation.
        mode:
          $ref: '#/components/schemas/mode'
        recipient_account:
          type:
            - object
            - 'null'
          description: >-
            Destination bank account for the payments collected with the link.
            `null` unless your organization sent it on creation.
          properties:
            holder_id:
              type: string
              example: '111111111'
              description: >-
                National identifier of the account holder. In Chile, a RUT (Rol
                Único Tributario) without dots or hyphen.
            institution_id:
              type: string
              example: cl_banco_de_chile
              description: Fintoc identifier of the account's institution.
            number:
              type: string
              example: '123456789'
              description: Account number, without hyphens or leading zeros.
            type:
              type: string
              enum:
                - checking_account
                - savings_account
                - sight_account
                - rut_account
                - line_of_credit
                - credit_card
              example: checking_account
              description: Type of the destination account.
          required:
            - holder_id
            - institution_id
            - number
            - type
        status:
          type: string
          enum:
            - active
            - expired
            - canceled
          example: active
          description: >-
            Status of the payment link. One of `active` (accepts payments),
            `expired` (the expiration date passed), or `canceled` (you canceled
            the link).
        url:
          type: string
          example: https://pay.fintoc.com/plink_K2zwNNSxPyx8w3GZ
          description: URL of the page where your customer pays.
      required:
        - id
        - object
        - amount
        - checkout
        - created_at
        - currency
        - customer_email
        - expires_at
        - metadata
        - mode
        - recipient_account
        - status
        - url
    error_object:
      type: object
      properties:
        error:
          type: object
          description: Details of the error that caused the request to fail.
          properties:
            code:
              type: string
              description: >-
                Machine-readable code identifying the specific error, for
                example `invalid_api_key`. Not returned by every error.
              example: invalid_api_key
            doc_url:
              type: string
              description: >-
                URL of a documentation page with more details about the error.
                Not returned by every error.
              example: https://docs.fintoc.com/reference/errors
            message:
              type: string
              description: Human-readable message describing the error.
              example: 'Invalid API Key: invalid-*oken'
            param:
              type:
                - string
                - 'null'
              description: >-
                Name of the request parameter that caused the error. `null` when
                the error cannot be tied to a single parameter, and not returned
                by every error.
              example: amount
            type:
              type: string
              description: >-
                Category of the error, for example `invalid_request_error`,
                `authentication_error`, or `api_error`.
              example: invalid_request_error
          required:
            - type
            - message
    mode:
      type: string
      enum:
        - test
        - live
      description: >-
        Mode of the object. `live` objects use real institution data, `test`
        objects use fake data for integration testing.
      example: live
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      in: header

````