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

# Payment links

> Learn how to use payment links to easily collect payments from your customers

<Info>
  <b>Payment links</b> let you collect payments from anyone, anywhere, with a
  simple link—no code or integration required. Create, share, and track payment
  links from your dashboard or via API.
</Info>

<Frame>
  <img src="https://mintcdn.com/monieswitch-a80c7231/k8Ftg8fWbVmRIvyJ/images/create-payment-link.png?fit=max&auto=format&n=k8Ftg8fWbVmRIvyJ&q=85&s=001526a66f5b62d015eb71d76c028f54" alt="Create Payment Link Modal" width="2384" height="1548" data-path="images/create-payment-link.png" />
</Frame>

***

## Payment Link Lifecycle

```mermaid theme={"system"}
flowchart LR
    A[Create Payment Link] --> B[Share Link]
    B --> C[Customer Pays]
    C --> D[Receive Payment]
    D --> E[Track & Manage Link]
```

***

<Tabs>
  <Tab title="Dashboard">
    <Steps>
      <Step title="Upload Image (Optional)">
        <ul>
          <li><b>Purpose:</b> This image displays when the link is shared with customers</li>
          <li><b>Recommended specs:</b> 1024×512 pixel JPG or PNG under 1MB</li>
          <li><b>How to:</b> Click "Choose File" to upload your image</li>
          <li><b>Best practice:</b> Use your business logo or product image for brand recognition</li>
        </ul>
      </Step>

      <Step title="Name Your Payment Link">
        <ul>
          <li><b>Field:</b> "Name of payment link"</li>
          <li><b>Purpose:</b> Internal reference and customer-facing title</li>
          <li><b>Example:</b> "Monthly Subscription", "Product Purchase", "Service Fee"</li>
          <li><b>Tip:</b> Use clear, descriptive names that customers will recognize</li>
        </ul>
      </Step>

      <Step title="Add Description (Optional)">
        <ul>
          <li><b>Purpose:</b> Provides additional context about the payment</li>
          <li><b>Best practice:</b> Include details about what the customer is paying for</li>
          <li><b>Example:</b> "Monthly subscription for premium features" or "One-time setup fee"</li>
        </ul>
      </Step>

      <Step title="Select Payment Link Type">
        ```mermaid theme={"system"}
        flowchart LR
          A2[Payment Link]
          A2 --> A2a[Fixed]
          A2 --> A2b[Custom]
          A2 --> A2c[Input]
          A2 --> A2d[Dropdown]
        ```

        Choose the type that fits your use case:

        | Type                   | When to Use             | Customer Experience                   | Example                               |
        | ---------------------- | ----------------------- | ------------------------------------- | ------------------------------------- |
        | **Fixed Amount**       | Set price               | Customer pays a specific amount       | ₦5,000 monthly subscription           |
        | **Custom Amount**      | Flexible payments       | Customer enters any amount            | Donations, tips                       |
        | **Input Amount**       | Guided input            | Customer specifies amount with prompt | "Pay what you owe" scenarios          |
        | **Dropdown Selection** | Multiple preset options | Customer selects from dropdown        | ₦2,000, ₦5,000, ₦10,000 service tiers |
      </Step>

      <Step title="Configure Subaccount (Optional)">
        <ul>
          <li><b>Purpose:</b> Route payments to specific business accounts</li>
          <li><b>How to:</b> Select from dropdown if you have multiple subaccounts</li>
          <li><b>Note:</b> Only appears if you have subaccounts configured</li>
        </ul>
      </Step>

      <Step title="Add Additional Fields">
        Additional fields let you collect extra information from your customer during payment (e.g., phone number, delivery address, preferences).

        When you click <b>+ Add New Field</b>:

        <Frame>
          <img src="https://mintcdn.com/monieswitch-a80c7231/k8Ftg8fWbVmRIvyJ/images/add-additional-fields.png?fit=max&auto=format&n=k8Ftg8fWbVmRIvyJ&q=85&s=a7f1369ef2d1368752e37572b08bf025" alt="Additional Field Dropdown UI" width="1436" height="1416" data-path="images/add-additional-fields.png" />
        </Frame>

        * A dropdown appears where you can select the <b>Type</b> of field:
          * <b>input</b> (text, email, number, etc.)
          * <b>select</b> (dropdown; if selected, you can add multiple options with label, value, and description)
          * <b>checkbox</b>
                  <Frame>
                    <img src="https://mintcdn.com/monieswitch-a80c7231/k8Ftg8fWbVmRIvyJ/images/additional-field-options.png?fit=max&auto=format&n=k8Ftg8fWbVmRIvyJ&q=85&s=9eb7596203ad2b94a13083bfc66e5210" alt="Additional Field Select UI" width="1090" height="1124" data-path="images/additional-field-options.png" />
                  </Frame>
        * <b>Name</b>: Internal identifier for the field
        * <b>Label</b>: What the customer sees on the form
        * <b>Placeholder</b>: Example or hint text inside the field
        * <b>Description</b>: Additional help text for the customer
        * <b>Is this field required?</b>: Checkbox to make the field mandatory
        * Click <b>Save</b> to add the field. You can add as many additional fields as needed.

        **Example additional fields:**

        * Customer name: type="input", name="customer\_name", label="Full Name"
        * Phone number: type="input", name="phone", label="Phone Number"
        * Email address: type="input", name="email", label="Email Address"
        * Delivery method: type="select", name="delivery\_method", label="Delivery Method", options=\["Pickup", "Home Delivery"]
      </Step>

      <Step title="Payment Responsibility">
        Choose who bears the payment processing charges:

        <ul>
          <li><b>Merchant (Default):</b> You absorb the processing fees. Customer pays exactly the displayed amount. <i>Best for: Transparent pricing</i></li>
          <li><b>Customer:</b> Customer pays the processing fees on top of the amount. <i>Best for: When you need to receive the full amount</i></li>
        </ul>
      </Step>

      <Step title="Link Reusability">
        Determine how many times the link can be used:

        <ul>
          <li><b>Reusable (Default):</b> Link can be used multiple times. <i>Best for: Ongoing services, subscriptions, or products</i></li>
          <li><b>One-time Use:</b> Link becomes invalid after first successful payment. <i>Best for: Invoices, single purchases, or limited offers</i></li>
        </ul>
      </Step>

      <Step title="Additional Options">
        <ul>
          <li><b>Webhook URL (Optional):</b> Receive real-time payment notifications. Format: Enter your server endpoint URL. Example: <code>[https://yoursite.com/webhook/payment](https://yoursite.com/webhook/payment)</code></li>
          <li><b>Callback URL (Optional):</b> Where to redirect customers after successful payment. Format: Full URL to your thank-you or confirmation page. Example: <code>[https://yoursite.com/thank-you](https://yoursite.com/thank-you)</code></li>
          <li><b>Custom Payment Link (Optional):</b> Personalize your payment link URL. Base URL: <code>[https://pay.monieswitch.com](https://pay.monieswitch.com)</code>. Add your preferred ending. Example: <code>[https://pay.monieswitch.com/your-custom-link](https://pay.monieswitch.com/your-custom-link)</code></li>
        </ul>
      </Step>
    </Steps>
  </Tab>

  <Tab title="API">
    <Steps>
      <Step title="Create a payment link">
        Use the API to create a payment link. You can specify all the payment details in the request body. Learn more about the API in the [API reference](/api-reference/).
      </Step>

      <Step title="Sample API Request">
        ```bash theme={"system"}
        curl --location 'https://nini.monieswitch.com/payment-link' \
        --header 'Authorization: Bearer {{merchantAPIKey}}' \
        --data-raw '{
            "amount": 200,
            "channel": "API",
            "name": "Product Purchase",
            "description": "One-time setup fee",
            "supportCard": true,
            "requiresName": true,
            "requiresPhone": true,
            "supportBankTransfer": true,
            "webhookURL": "https://yoursite.com/webhook/payment",
            "callbackURL": "https://yoursite.com/thank-you",
            "email":"customer@email.com",
            "fields": [
              {"type": "text", "name": "customer_name", "label": "Full Name"},
              {"type": "tel", "name": "phone", "label": "Phone Number"}
            ],
            "chargeBearer": "merchant",
            "reusable": true,
            "customLink": "your-custom-link"
        }'
        ```
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Share and Track Payment Links

<Frame>
  <img src="https://mintcdn.com/monieswitch-a80c7231/b9VCGopr8ctPliW8/images/viewpaylink.png?fit=max&auto=format&n=b9VCGopr8ctPliW8&q=85&s=81719c84c8f40d68fe2c823e71e43e33" width="2304" height="242" data-path="images/viewpaylink.png" />
</Frame>

When you create a new payment link, you get a sharable link that you can send to
your customers and also track its activities from the view page.

You can embed the payment link on your website or share it on social media, email, or messaging apps.

```html button.html theme={"system"}
<form action="{paymentLink}" method="post">
  <button type="submit">Pay Now</button>
</form>
```

## Managing Payment Links: Deactivate, Reactivate, and More

You can manage the lifecycle of a payment link from the Dashboard or via API. This includes deactivating, reactivating, editing, viewing, and tracking all related transactions.

<Frame>
  <img src="https://mintcdn.com/monieswitch-a80c7231/k8Ftg8fWbVmRIvyJ/images/edit-payment-link.png?fit=max&auto=format&n=k8Ftg8fWbVmRIvyJ&q=85&s=c9bbbde3434f4023f36024335464ce8a" alt="Payment Link UI" width="2392" height="1002" data-path="images/edit-payment-link.png" />
</Frame>

<Tabs>
  <Tab title="Dashboard">
    <Steps>
      <Step title="Deactivate or Reactivate">
        Use the action button on the payment link to deactivate it. Once deactivated, customers can no longer make payments with that link. You can reactivate the link at any time from the same menu.
      </Step>

      <Step title="View Payment Link Details">
        View the payment link's status, details, and all associated transactions in one place.
      </Step>

      <Step title="Edit Payment Link">
        Update the payment link's name, description, or additional fields as needed.
      </Step>

      <Step title="Make a Test Payment">
        Use the payment link to initiate a payment and verify the flow.
      </Step>

      <Step title="View Transactions">
        See a list of all transactions made through the payment link, including status and details.
      </Step>
    </Steps>
  </Tab>

  <Tab title="API">
    <Steps>
      <Step title="Deactivate a Payment Link">
        Use the API to deactivate a payment link. Learn more in the [API reference](/api-reference/).

        ```bash theme={"system"}
        curl --location --request DELETE 'https://nini.monieswitch.com/payment-link?paymentLinkID={ID}' \
        --header 'Authorization: Bearer {{merchantAPIKey}}' \
        --data ''
        ```
      </Step>

      <Step title="Reactivate a Payment Link">
        ```bash theme={"system"}
        curl --location --request PATCH 'https://nini.monieswitch.com/payment-link/activate' \
        --header 'Authorization: Bearer {{merchantAPIKey}}' \
        --data '{
            "paymentLinkID": "{ID}"
        }'
        ```
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Best Practices

<Info>
  <b>For Better Conversion</b>
  <br />- Use clear, descriptive names that immediately tell customers what they're
  paying for - Add relevant images to build trust and recognition - Write helpful
  descriptions that eliminate confusion - Choose appropriate link types based on
  your business model
</Info>

<Info>
  <b>For Better Management</b>
  <br />- Use consistent naming conventions for easy organization - Set up webhooks
  for automatic payment tracking - Configure callback URLs for better customer experience

  * Test links thoroughly before sharing with customers
</Info>

<Warning>
  <b>Security Considerations</b>
  <br />- Use HTTPS URLs for webhooks and callbacks - Validate webhook signatures
  on your server - Don't share sensitive information in link names or descriptions

  * Monitor link usage regularly for suspicious activity
</Warning>

## Common Use Cases

### E-commerce

* <b>Type:</b> Fixed or Dropdown
* <b>Additional fields:</b> Customer name, shipping address
* <b>Callback:</b> Order confirmation page

### Services

* <b>Type:</b> Fixed or Input
* <b>Additional fields:</b> Project details, contact information
* <b>Webhook:</b> Update project management system

### Donations

* <b>Type:</b> Custom
* <b>Additional fields:</b> Donor name, message
* <b>Callback:</b> Thank you page with donation receipt

### Subscriptions

* <b>Type:</b> Fixed
* <b>Reusability:</b> Reusable
* <b>Additional fields:</b> Account email, subscription preferences

## Troubleshooting

<Warning>
  <b>Common Issues</b>
  <br />- <b>Image not displaying:</b> Check file size (under 1MB) and format (JPG/PNG)

  * <b>Link not working:</b> Verify all required fields are completed - <b>
    Webhook not firing:
    </b> Ensure URL is accessible and returns 200 status - <b>
    Customers confused:
    </b> Add clearer descriptions and appropriate additional fields
</Warning>

<Info>
  <b>Testing Your Link</b>

  <br />

  1. Create a test link with a small amount 2. Complete a test transaction 3.
     Verify webhook notifications (if configured) 4. Check callback URL redirection
  2. Confirm additional field data collection
</Info>

## Final Steps

After configuring all settings:

1. Review all information for accuracy
2. Test the payment flow
3. Share the link with customers
4. Monitor payments and adjust settings as needed

Your payment link is now ready to accept payments from customers worldwide!

<Snippet file="api-reference-link.mdx" />
