# Manage Payment Links
On this page, find out how to:
- [Create a Payment Link](#Create_a_Payment_Link)
- [Check on the status of a Payment Link session](#Check_the_status_of_a_Payment_Link)
---
## Before you start
- Make sure you've registered to begin using Payment Links. Contact your Solution Engineer or [request support](https://dashboard.checkout.com/support/new?topic=case_account_management_and_access&issue=issue_account_changes). During integration, you can specify your payment capture and 3D Secure settings.
- Create your [secret and public API keys](https://www.checkout.com/docs/resources/api-authentication/api-keys.md) in the Dashboard.
- [Configure your webhook server](https://www.checkout.com/docs/developer-resources/event-notifications/receive-webhooks/configure-your-webhook-server.md) to be notified when the payment is approved, so you can continue the sales fulfillment flow.
---
## Create a Payment Link
### Step 1: Create a new Payment Link session
When requesting a payment from a customer using Payment Links solution, you can create a Payment Links session. This can be sent to the customer through a method that best suits you.
To display a button that redirects the customer after their payment is approved, make sure your API request includes a `return_url` parameter with your chosen URL value.
To get a detailed view of all required and optional fields, see our [API reference](https://api-reference.checkout.com/).
> **Note**
>
> Checkout.com does not support Payment Links embedded within an iframe.
> **Information**
>
> You can [enable Remember Me](https://www.checkout.com/docs/payments/accept-payments/accept-a-payment-on-your-website/extend-your-flow-integration/enable-remember-me.md) to allow customers to save their card details during checkout. The next time the customer shops at any merchant that has Remember Me enabled, we display their saved card details.
### Endpoints
> **Note**
>
> http://localhost/ can only be used for the URL fields during testing and does not work in production.
> **Information**
>
> Your base URL's `{prefix}` value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see [API endpoints](https://www.checkout.com/docs/developer-resources/api/api-endpoints.md).
**Production**
`POST` `https://{prefix}.api.checkout.com/payment-links`
**Sandbox**
`POST` `https://{prefix}.api.sandbox.checkout.com/payment-links`
The fields you're required to supply in your request vary depending on the payment method used. To see which fields are required, refer to the [Payment methods](#Payment_methods_field_requirements) table.
### Request example
```json
{
"amount": 1000,
"currency": "GBP",
"reference": "ORD-123A",
"billing": {
"address": {
"country": "GB"
}
},
"customer": {
"name": "Ali Farid",
"email": "ali.farid@example.com",
"phone": {
"country_code": "+44",
"number": "7946 0000"
}
},
"return_url": "https://example.com/payments/return"
}
```
### Payment method field requirements
Some payment methods may require you to provide additional fields or specific values when you perform a payment request. Refer to the [API reference](https://api-reference.checkout.com/tag/Payment-Links/#operation/createAPaymentLinkSession) for more details.
| Payment method | Field requirements |
| --- | --- |
| Card payments | No additional requirements. |
| Apple Pay | - Apple Pay is processed as a card transaction.
- `currency` and `billing.address.country` must be [supported by Apple Pay](https://support.apple.com/en-gb/102775). |
| Google Pay | - Google Pay is processed as a card transaction.
- `currency` and `billing.address.country` must be [supported by Google Pay](https://support.google.com/googlepay/answer/12429287?hl=en-GB). |
| AlipayCN | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `CN`, for China
- `currency` value must be one of:
- `CNY`
- `HKD`
- `SGD` |
| AlipayHK | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `HK`, for Hong Kong
- `currency` value must be one of:
- `HKD`
- `SGD` |
| Alma | - `billing.address.country` value must be `FR`, for France
- `currency` value must be `EUR` |
| Bacs | - `billing.address.country` value must be `GB`, for the United Kingdom
- `currency` value must be `GBP`
- `payment_type` must be set to `Regular` or `Recurring`
- `amount` must be provided |
| Bancontact | - `customer.name` must be provided
- `billing.address.country` value must be `BE`, for Belgium
- `currency` value must be `EUR` |
| Benefit Payment Gateway | - `billing.address.country` value must be `BH`, for Bahrain
- `currency` value must be `BHD`
- `reference` must be provided |
| Bizum | - `billing.address.country` value must be `ES`, for Spain
- `currency` value must be `EUR` |
| BLIK | - `billing.address.country` value must be `PL`, for Poland
- `currency` value must be `PLN`
- `reference` must be provided |
| Dana | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `ID`, for Indonesia
- `currency` value must be one of:
- `IDR`
- `HKD`
- `SGD` |
| EPS | - `billing.address.country` value must be `AT`, for Austria
- `currency` value must be `EUR` |
| GCash | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `PH`, for the Philippines
- `currency` value must be one of:
- `PHP`
- `HKD`
- `SGD` |
| iDEAL | - `billing.address.country` value must be `NL`, for Netherlands
- `currency` value must be `EUR` |
| Kakao Pay | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `KR`, for South Korea
- `currency` value must be one of:
- `KRW`
- `HKD`
- `SGD` |
| Klarna | - `products[]` must be provided
- `customer.name` must be provided
- `billing.address.country` value must be one of:
- `AT` for Austria
- `AU` for Australia
- `BE` for Belgium
- `CH` for Switzerland
- `CZ` for Czech Republic
- `DE` for Germany
- `DK` for Denmark
- `ES` for Spain
- `FR` for France
- `FI` for Finland
- `GB` for United Kingdom
- `GR` for Greece
- `IE` for Ireland
- `IT` for Italy
- `NL` for Netherlands
- `NO` for Norway
- `PL` for Poland
- `PT` for Portugal
- `SE` for Sweden
- `US` for United States
- `currency` value must be one of:
- `AUD`
- `CHF`
- `CZK`
- `DKK`
- `EUR`
- `GBP`
- `NOK`
- `PLN`
- `SEK`
- `USD` |
| KNET | - `billing.address.country` value must be `KW`, for Kuwait
- `currency` value must be `KWD`
- `locale` value must be `ar` – if no value is provided, the `en-GB` locale is used by default |
| MB WAY | - `billing.address.country` value must be `PT`, for Portugal
- `currency` value must be `EUR`
- `reference` must be provided |
| MobilePay | - `billing.address.country` value must be one of:
- `DK` for Denmark
- `FI` for Finland
- `currency` value must be one of:
- `EUR`
- `DKK` |
| Multibanco | - `customer.name` must be provided
- `billing.address.country` value must be `PT`, for Portugal
- `currency` value must be `EUR` |
| Octopus | - `billing.address.country` value must be `HK`, for Hong Kong
- `currency` value must be `HKD`
- `payment_type` must be set to `Regular` |
| PayNow | - `billing.address.country` value must be `SG`, for Singapore
- `currency` value must be `SGD`
- `payment_type` must be set to `Regular` |
| PayPal | - `products[]` must be provided.
- `currency` and `billing.address.country` must be [supported by PayPal](https://www.paypal.com/uk/webapps/mpp/country-worldwide). |
| Przelewy24 | - `customer.name` must be provided
- `customer.email` must be provided
- `billing.address.country` value must be `PL`, for Poland
- `currency` value must be `EUR` or `PLN` |
| QPay | - `billing.address.country` value must be `QA`, for Qatar
- `currency` value must be `QAR`
- `description` must be provided |
| SEPA Direct Debit | - `billing.address.address_line1` must be provided
- `billing.address.city` must be provided
- `billing.address.country` value must be set to a country in the [Single Euro Payments Area (SEPA)](https://www.ecb.europa.eu/paym/integration/retail/sepa/html/index.en.html)
- `billing.address.zip` must be provided
- `currency` value must be `EUR` |
| stc pay | - `billing.address.country` must be set to `SA`
- `currency` value must be `SAR`
- `reference` must be provided |
| Swish | - `billing.address.country` must be set to `SE`
- `currency` value must be `SEK`
- `payment_type` must be set to `Regular` |
| Tabby | - `billing.address.country` value must be one of:
- `AE` for United Arab Emirates
- `SA` for Saudi Arabia
- `KW` for Kuwait
- `currency` value must be one of:
- `AED`
- `SAR`
- `KWD`
- `reference` must be provided
- The following shipping information must be provided:
- `shipping.address_line1`
- `shipping.city`
- `shipping.zip`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `price`
- `quantity` |
| Tamara | - `reference` must be provided.
- `products[]` must be provided.
- `billing.address.address_line1` and `billing.address.city` must be provided.
- Either `customer.email` or `customer.id` must be provided.
- For each `item` in `items[]`, the following must be provided:
- `name`
- `unit_price`
- `quantity`
- Provide shipping information in the following fields:
- `shipping.address.address_line1`
- `shipping.address.city`
- `shipping.address.country`
- `billing.address.country` must be one of:
- `SA` for Saudi Arabia
- `AE` for United Arab Emirates
- `currency` must be one of:
- `SAR`
- `AED`
Tamara performs a credit assessment on each customer during the sign up and checkout process. In some cases, such as for marketplaces, travel, or high-risk industries, Tamara may require additional data to improve their risk assessment. This can include the following fields:
- `customer.summary.first_transaction_date`
- `customer.summary.is_premium_customer`
- `customer.summary.is_returning_customer`
- `customer.summary.last_payment_amount`
- `customer.summary.last_payment_date`
- `customer.summary.lifetime_value`
- `customer.summary.registration_date`
- `customer.summary.total_order_count` |
| Touch 'n Go | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `MY`, for Malaysia
- `currency` value must be one of:
- `MYR`
- `HKD`
- `SGD` |
| TrueMoney | - `customer.email` or `customer.id` must be provided
- `payment_type` must be set to `Regular` or `Recurring`
- `products[]` must be provided
- For each `product` in `products[]`, the following must be provided:
- `name`
- `quantity`
- `reference`
- `unit_price`
- `billing.address.country` value must be `TH`, for Thailand
- `currency` value must be one of:
- `THB`
- `HKD`
- `SGD` |
| TWINT | - `billing.address.country` value must be `CH`, for Switzerland
- `currency` value must be `CHF`
- `payment_type` must be set to `Regular`
- `reference` must be provided |
| Venmo | - `billing.address.country` must be `US`, for the United States
- `currency` value must be `USD` |
| Vipps | - `billing.address.country` value must be one of:
- `NO` for Norway
- `SE` for Sweden
- `currency` value must be one of:
- `NOK`
- `SEK` |
| WeChat Pay | - `amount` must be provided
- `payment_type` value must be `Regular` |
### Response example
```json
{
"id": "pl_ELqQJXdXzabU",
"reference": "ORD-123A",
"expires_on": "2024-08-20T20:25:28+08:00",
"_links": {
"redirect": {
"href": "https://pay.sandbox.checkout.com/link/pl_ELqQJXdXzabU"
}
}
}
```
### Step 2: Send the link to your customer
Retrieve the Payment Link from `_links.redirect.href` to send to your customer.
This could be by email, text message, social media, live chat – wherever your customer wants to pay.
When they visit the link, they're presented with a [Hosted Payments Page](https://www.checkout.com/docs/integrate/hosted-payments-page.md) to complete their payment. Once they complete the payment, they're redirected to a Checkout.com-hosted confirmation page.
> **Note**
>
> Do not rely only on the front-end redirection as confirmation that the payment was successful. Confirm the payment status from the relevant webhooks before you finalize the order or fulfill the sale.
>
> See the webhooks section of each [payment method](https://www.checkout.com/docs/payments/add-payment-methods.md) for the relevant webhooks to subscribe to.
---
## Check the status of a Payment Link
To keep track of the payments you request through Payment Links, you can check the status using the id returned when you created the session. For example, `pl_ELqQJXdXzabU`.
There are three statuses:
- `Active` – The Payment Link can accept a payment from the customer. A payment may have been attempted by the customer but not completed successfully.
- `Payment Received` – A payment has been received successfully using this Payment Link.
- `Expired` – The Payment Link has expired and can no longer be accessed.
### Endpoints
For a full explanation of the fields, see our [API reference](https://api-reference.checkout.com/#tag/Payment-Links).
> **Information**
>
> Your base URL's `{prefix}` value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see [API endpoints](https://www.checkout.com/docs/developer-resources/api/api-endpoints.md).
**Production**
`GET` `https://{prefix}.api.checkout.com/payment-links/{id}`
**Sandbox**
`GET` `https://{prefix}.api.sandbox.checkout.com/payment-links/{id}`
### Response examples
**Active**
```json
{
"id": "pl_ELqQJXdXzabU",
"status": "Active",
"payment_id": "undefined",
"amount": 200,
"currency": "GBP",
"reference": "ORD-123A",
"description": "Payment for Gold Necklace",
"expires_on": "2021-08-20T20:25:28+08:00",
"customer": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"billing": {
"address": {
"address_line1": "123 High St.",
"address_line2": "Flat 456",
"city": "London",
"zip": "SW1A 1AA",
"country": "GB"
},
"phone": {
"country_code": "+44",
"number": "1234567890"
}
},
"products": [
{
"name": "Gold Necklace",
"quantity": 1,
"price": 200
}
],
"_links": {
"self": {
"href": "https://{prefix}.api.sandbox.checkout.com/payment-links/pl_ELqQJXdXzabU"
},
"redirect": {
"href": "https://pay.sandbox.checkout.com/link/pl_ELqQJXdXzabU"
}
}
}
```
**Payment Received**
```json
{
"id": "pl_ELqQJXdXzabU",
"status": "Payment Received",
"payment_id": "pay_mbabizu24mvu3mela5njyhpit4",
"amount": 200,
"currency": "GBP",
"reference": "ORD-123A",
"description": "Payment for Gold Necklace",
"expires_on": "2021-08-20T20:25:28+08:00",
"customer": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"billing": {
"address": {
"address_line1": "123 High St.",
"address_line2": "Flat 456",
"city": "London",
"zip": "SW1A 1AA",
"country": "GB"
},
"phone": {
"country_code": "+44",
"number": "1234567890"
}
},
"products": [
{
"name": "Gold Necklace",
"quantity": 1,
"price": 200
}
],
"_links": {
"self": {
"href": "https://{prefix}.api.sandbox.checkout.com/payment-links/pl_ELqQJXdXzabU"
},
"redirect": {
"href": "https://pay.sandbox.checkout.com/link/pl_ELqQJXdXzabU"
},
"payment": {
"href": "https://{prefix}.api.sandbox.checkout.com/payments/pay_mbabizu24mvu3mela5njyhpit4"
},
"payment_actions": {
"href": "https://{prefix}.api.sandbox.checkout.com/payments/pay_mbabizu24mvu3mela5njyhpit4/actions"
}
}
}
```
**Expired**
```json
{
"id": "pl_ELqQJXdXzabU",
"status": "Expired",
"payment_id": "undefined",
"amount": 200,
"currency": "GBP",
"reference": "ORD-123A",
"description": "Payment for Gold Necklace",
"expires_on": "2021-08-20T20:25:28+08:00",
"customer": {
"name": "John Smith",
"email": "john.smith@example.com"
},
"billing": {
"address": {
"address_line1": "123 High St.",
"address_line2": "Flat 456",
"city": "London",
"zip": "SW1A 1AA",
"country": "GB"
},
"phone": {
"country_code": "+44",
"number": "1234567890"
}
},
"products": [
{
"name": "Gold Necklace",
"quantity": 1,
"price": 200
}
],
"_links": {
"self": {
"href": "https://{prefix}.api.sandbox.checkout.com/payment-links/pl_ELqQJXdXzabU"
},
"redirect": {
"href": "https://pay.sandbox.checkout.com/link/pl_ELqQJXdXzabU"
}
}
}
```
---
## Next steps
**[Customize Payment Links](https://www.checkout.com/docs/integrate/payment-links/customize-payment-links.md)**
Find out how a Payment Link can be customized.