# Get payment link

`GET /accounts/{accountID}/payment-links/{paymentLinkCode}`

API version: `v2026.07.00`. Send `X-Moov-Version: v2026.07.00` to get the behavior described here.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

Retrieve a payment link by code.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) 
you'll need to specify the `/accounts/{accountID}/transfers.read` scope.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Moov-Version` | header | string |  | Set this header to v2026.07.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, the earliest supported version, which may not match the behavior documented here. An unrecognized well-formed version uses the latest supported version that is not newer than the requested version, when one exists. For example, `v2026.08.00` uses `v2026.07.00`. A malformed value, such as `2022`, returns a `404` response. Values: `v2026.07.00`. |
| `accountID` | path | string | Yes | The merchant account ID. |
| `paymentLinkCode` | path | string | Yes | Unique code identifying this payment link. |

## Response 200

The request completed successfully.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | string | Yes | Unique code identifying this payment link. |
| `paymentLinkType` | string | Yes | Values: `payment`, `payout`, `invoice-payment`, `custom-amount-payment`. |
| `mode` | string | Yes | The operating mode for an account. Values: `sandbox`, `production`. |
| `status` | string | Yes | Values: `active`, `used`, `disabled`, `expired`. |
| `partnerAccountID` | string | Yes | The partner's Moov account ID. |
| `merchantAccountID` | string | Yes | The merchant's Moov account ID. |
| `ownerAccountID` | string | Yes | The payment link's owner's Moov account ID. |
| `merchantPaymentMethodID` | string | Yes | The merchant's preferred payment method ID. Must be a wallet payment method. |
| `link` | string (uri) | Yes | Link to the payment landing page for this payment link. |
| `amount` | object |  | The fixed amount of the payment link. In API versions before `2026.07.00`, this was a required field. In API version `2026.07.00` and beyond, this field is present for `payment` and `payout` links and omitted for `customAmountPayment` links, where the payor chooses the amount. |
| `amount.currency` | string | Yes | A 3-letter ISO 4217 currency code. |
| `amount.value` | integer (int64) | Yes | Quantity in the smallest unit of the specified currency. In USD this is cents, for example, $12.04 is 1204 and $0.99 is 99. |
| `uses` | integer (int64) | Yes | The number of times this payment link has been used. |
| `maxUses` | integer (int64) |  | An optional limit on the number of times this payment link can be used. **For payouts, `maxUses` is always 1.** |
| `lastUsedOn` | string (date-time) |  | The timestamp when this payment link was last used. |
| `expiresOn` | string (date-time) |  | An optional expiration date for this payment link. |
| `display` | object | Yes | Customizable display options for a payment link. |
| `display.title` | string | Yes | The payment page title displayed to the user. |
| `display.description` | string | Yes | A payment description displayed to the user. |
| `display.callToAction` | string | Yes | The text to be displayed on web form's submit button. If set to "auto" the UI will automatically select between "pay" and "confirm" for payments and payouts respectively. Values: `pay`, `book`, `subscribe`, `donate`, `confirm`, `auto`. |
| `customer` | object | Yes |  |
| `customer.requireAddress` | boolean |  | If true, a billing address is required when completing the payment form. |
| `customer.requirePhone` | boolean |  | If true, a phone number is required when completing the payment form. |
| `customer.tippingEnabled` | boolean |  | If true, tipping is enabled on the payment form. Defaults to false. |
| `customer.metadata` | object |  | Optional free-form metadata for the Moov account that will represent this customer. |
| `payment` | object |  | Options for payment links used to collect payment. |
| `payment.allowedMethods` | array of string | Yes | A list of payment methods that should be supported for this payment link. Values: `apple-pay`, `card-payment`, `ach-debit-collect`, `google-pay`. |
| `payment.cardDetails` | object |  | Options for payment links used to collect a card payment. |
| `payment.achDetails` | object |  | Options for payment links used to collect an ACH payment. |
| `payment.metadata` | object |  | Optional free-form metadata for the transfer. |
| `payout` | object |  | Options for payout links used to send a payout. |
| `payout.allowedMethods` | array of string | Yes | A list of payment methods that should be supported for this payment link. Values: `push-to-card`, `rtp-credit`, `ach-credit-same-day`, `ach-credit-standard`, `push-to-apple-pay`, `push-to-google-pay`. |
| `payout.recipient` | object | Yes | Specify the intended recipient of the payout. Either `email` or `phone` must be specified, but not both. This information will be used to authenticate the end user when they follow the payment link. |
| `payout.metadata` | object |  | Optional free-form metadata for the transfer. |
| `payout.pushOptions` | object |  | Delivery options for `push-to-card` and `push-to-apple-pay` payouts. |
| `payout.feePaidBy` | object |  | Indicates which party pays the fee, keyed by `PayoutFeePaidByKey`. If keys are not set, the default is `source`. Possible `PayoutFeePaidByKey` keys: `instant-push-to-card`, `deferred-push-to-card`, `instant-push-to-apple-pay`, `deferred-push-to-apple-pay`, `instant-bank-credit` (API v2026.01.00 and later), `rtp-credit`, `ach-credit-same-day`, `ach-credit-standard`, `push-to-google-pay` |
| `customAmountPayment` | object |  | A custom amount payment link shares all the options of a `payment` link, but the payor chooses how much to pay rather than the merchant fixing the amount. The amount may optionally be constrained to a range. |
| `customAmountPayment.allowedMethods` | array of string | Yes | A list of payment methods that should be supported for this payment link. Values: `apple-pay`, `card-payment`, `ach-debit-collect`, `google-pay`. |
| `customAmountPayment.cardDetails` | object |  | Options for payment links used to collect a card payment. |
| `customAmountPayment.achDetails` | object |  | Options for payment links used to collect an ACH payment. |
| `customAmountPayment.metadata` | object |  | Optional free-form metadata for the transfer. |
| `customAmountPayment.amountRange` | object |  | The minimum and maximum amounts the payor can specify. When omitted, the payor may enter any amount. Both bounds must use USD. |
| `customAmountPayment.suggestedAmounts` | array of object |  | Optional preset amounts displayed to the payor. Each suggested amount must use USD and, when an `amountRange` is set, fall within it. |
| `lineItems` | object |  | An optional collection of line items for a payment link. When line items are provided, their total plus tax must equal the payment link amount. |
| `lineItems.items` | array of object | Yes | The list of line items. |
| `createdOn` | string (date-time) | Yes |  |
| `updatedOn` | string (date-time) | Yes |  |
| `disabledOn` | string (date-time) |  |  |
| `amountDetails` | object |  |  |
| `amountDetails.tax` | object |  | The amount of tax applied to the payment link. |
| `amountDetails.surcharge` | object |  | The amount of surcharge applied to the payment link. |

## Errors

| Status | Meaning |
| --- | --- |
| 401 | The request contained missing or expired authentication. |
| 403 | The user is not authorized to make the request. |
| 404 | The requested resource was not found. |
| 429 | Request was refused due to rate limiting. |
| 500 | The request failed due to an unexpected error. |
| 504 | The request failed because a downstream service failed to respond. |

## Examples

### cURL

```bash
curl -X GET "https://api.moov.io/accounts/{accountID}/payment-links/{paymentLinkCode}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"
```

### Typescript (SDK)

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.paymentLinks.get({
    accountID: "323f95b1-3798-4203-8a73-5c8668a9226e",
    paymentLinkCode: "uc7ZYKrMhi",
  });

  console.log(result);
}

run();
```

Full reference with SDK examples in every language: https://docs.moov.io/api/money-movement/payment-links/get/
