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

# Create a payment link

`POST /v1/payment_links/`

Create a payment link

**Required scopes: `business/orders:read`, `business/orders:write`**

## Request body

- CreatePaymentLinkRequest
  - `customer_reference` string, required — The customer's name or reference that will appear on the payment page.
  - `customer_description` string, nullable — An optional description that will appear on the payment page.
  - `amount` Money, required — `Money` represents a monetary value denoted by both an amount and a currency. The `amount` is always going to be the smallest denomination of the given currency. As an example, when dealing with South African Rands (ZAR), the amount is in cents. eg: R150.45 is therefore represented by `Money(amount=15045, currency="ZAR")`.
    - `amount` integer, required — The amount of money in the smallest denomination of the currency. For example, when the `currency` is `ZAR`, the `amount` is in cents.
    - `currency` string, required — The currency code in ISO 4217 format.

## Response `201`

Successful Response

- PaymentLink
  - `id` string, required — The unique identifier of the payment link.
  - `url` string, required — The payment link.
  - `customer_reference` string, required — The customer's name or reference that will appear on the payment page.
  - `customer_description` string, nullable, required — An optional description that will appear on the payment page.
  - `status` 'cancelled' | 'paid' | 'pending', required — A payment link transitions through various states throughout its lifecycle. A payment link is always created in a `pending` state. From there, it will move to a terminal state which will be one of either `paid` or `cancelled`. The following transitions are possible: - pending -> paid - pending -> cancelled
  - `order_id` string, required — A reference to the original order.
  - `created_at` string, date-time, required — The payment link creation date and time in ISO 8601 format.
  - `updated_at` string, date-time, nullable, required — The date and time the payment link was last modified in ISO 8601 format.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `429` — Too Many Requests

---

[API](https://skmtc.net/yoco/apis/yoco-api.md) · [All operations](https://skmtc.net/yoco/apis/yoco-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/yoco/yoco-api/versions/1ee03e82bc45/schema)
