---
title: "Create a payment link"
method: POST
path: "/payment_links"
tags: ["Payment links"]
---

# Create a payment link

`POST /payment_links`

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.

## Request body

- object
  - `amount` integer, required — 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` 'CLP' | 'MXN', required — Three-letter ISO 4217 currency code. One of `CLP` (Chilean peso) or `MXN` (Mexican peso). Case-insensitive.
  - `business_profile` object — **Required if your organization identifies a business profile per payment.** Enrolled merchant on whose behalf you collect the payment, used for category-based billing.
    - `category` string — Six-character activity code of the enrolled merchant. In Chile, the activity code defined by the tax authority (SII).
    - `name` string — Name of the enrolled merchant. When set, the checkout shows the name as the recipient of the payment.
    - `tax_id` string — Tax identifier of the enrolled merchant. In Chile, a valid RUT (Rol Único Tributario).
  - `checkout` object — Checkout customization. Supports a single `description` key.
    - `description` string — Text shown next to the buy button on the payment page.
  - `customer_email` string — Email address of your customer, used for transaction notifications, including refunds.
  - `expires_after_seconds` integer — Number of seconds after which the payment link expires. Must be greater than `0`. If omitted, the payment link never expires.
  - `metadata` object — Set of key-value pairs you can attach to the payment link to store additional information in a structured format.
  - `recipient_account` object — **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.
    - `holder_id` string, required — National identifier of the account holder. In Chile, a valid RUT without dots or hyphen.
    - `institution_id` string, required — Identifier of the account's institution.
    - `number` string, required — Account number, without hyphens or leading zeros.
    - `type` 'checking_account' | 'savings_account' | 'sight_account' | 'rut_account' | 'line_of_credit' | 'credit_card', required — Type of the destination account.

## Response `201`

Payment link created. Share the returned `url` with your customer to collect the payment.

- PaymentLink
  - `id` string, required — Unique identifier of the payment link.
  - `object` 'payment_link', required — Type of the object. Always `payment_link`.
  - `amount` integer, required — 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` object, required — Checkout customization. The `description` key holds the text shown next to the buy button, or `null` when you do not set it.
  - `created_at` string, date-time, required — ISO 8601 datetime in UTC of when the payment link was created.
  - `currency` 'CLP' | 'MXN', required — Three-letter ISO 4217 currency code. One of `CLP` (Chilean peso) or `MXN` (Mexican peso).
  - `customer_email` string, nullable, required — Email address of your customer, used for transaction notifications. `null` when not provided on creation.
  - `expires_at` string, date-time, nullable, required — ISO 8601 datetime in UTC of when the payment link expires. `null` when the payment link does not expire.
  - `metadata` object, required — Set of key-value pairs attached to the payment link on creation.
  - `mode` 'test' | 'live', required — Mode of the object. `live` objects use real institution data, `test` objects use fake data for integration testing.
  - `recipient_account` object, nullable, required — Destination bank account for the payments collected with the link. `null` unless your organization sent it on creation.
    - `holder_id` string, required — National identifier of the account holder. In Chile, a RUT (Rol Único Tributario) without dots or hyphen.
    - `institution_id` string, required — Fintoc identifier of the account's institution.
    - `number` string, required — Account number, without hyphens or leading zeros.
    - `type` 'checking_account' | 'savings_account' | 'sight_account' | 'rut_account' | 'line_of_credit' | 'credit_card', required — Type of the destination account.
  - `status` 'active' | 'expired' | 'canceled', required — Status of the payment link. One of `active` (accepts payments), `expired` (the expiration date passed), or `canceled` (you canceled the link).
  - `url` string, required — URL of the page where your customer pays.

## Other responses

- `400` — 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.
- `401` — Invalid or missing API key.
- `402` — No payment method is enabled for your organization.

---

[API](https://skmtc.net/fintoc/apis/fintoc-api.md) · [All operations](https://skmtc.net/fintoc/apis/fintoc-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fintoc/fintoc-api/revisions/9dafa63688a3/schema)
