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

# Create Payment Link

> API reference for creating a payment link with flexible payment method configuration

When creating a payment link, the `expiresAt` field is optional. The `dispayMessage`, `payerDetails` and `paymentDetails` object is always required. The `paymentDetails`, its structure varies based on the selected `paymentMethod` and `currency`. Refer to the [Supported Payment Methods](/guides/supported-payment-methods) guide for the required fields per payment method.

***

## Country Code Consistency

The `currencyIso2` field at the root of the request must correspond to the country of the `currency` specified in `paymentDetails`. For example, if `paymentDetails.currency` is `NGN`, then `currencyIso2` must be `NG`. This ensures consistency between the requested currency and its country of issuance.

***

## Request Body

```json theme={null}
{
  "amount": 100000,
  "currencyIso2": "NG",
  "displayMessage": "Pay on time",
  "payerDetails": {
    "name": "JOHN DOE",
    "email": "johndoe@gmail.com"
  },
  "expiresAt": "2025-06-25T17:40:00Z",
  "paymentDetails": {
    "accountName": "MONIRATES LIMITED",
    "accountNumber": "0115847370",
    "providerName": "MTN",
    "paymentMethod": "BANK_TRANSFER",
    "currency": "NGN",
    "bankCode": "90221"
  }
}
```

### Fields

| Field                          | Required    | Description                                                                                                                                         |
| ------------------------------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `amount`                       | Yes         | The payment amount.                                                                                                                                 |
| `currencyIso2`                 | Yes         | The ISO2 country code corresponding to the `currency` in `paymentDetails`.                                                                          |
| `displayMessage`               | Yes         | A custom message shown to the payer.                                                                                                                |
| `payerDetails.name`            | Yes         | Name of the payer.                                                                                                                                  |
| `payerDetails.email`           | Yes         | Email of the payer.                                                                                                                                 |
| `expiresAt`                    | No          | Expiry datetime for the payment link in ISO 8601 format.                                                                                            |
| `paymentDetails.accountName`   | Yes         | Name on the receiving account.                                                                                                                      |
| `paymentDetails.accountNumber` | Yes         | Receiving account number.                                                                                                                           |
| `paymentDetails.providerName`  | Yes         | Bank name (for `NGN`), routing/sort code or institution name (for other `BANK_TRANSFER` currencies), or mobile money provider (for `MOBILE_MONEY`). |
| `paymentDetails.paymentMethod` | Yes         | `BANK_TRANSFER` or `MOBILE_MONEY`.                                                                                                                  |
| `paymentDetails.currency`      | Yes         | The currency to collect payment in.                                                                                                                 |
| `paymentDetails.bankCode`      | Conditional | Required for `BANK_TRANSFER`. Omit for `MOBILE_MONEY`.                                                                                              |
| `paymentDetails.network`       | Conditional | Required for `MOBILE_MONEY`. Must match `providerName`. Omit for `BANK_TRANSFER`.                                                                   |
