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

# Payment Requests

> Collect payments via shareable links or push notification.

## **Overview**

**Payment Requests** let you collect money fast in two ways:

* **Links:** Generate a pay link and share it anywhere.
* **Push (Bank Push):** Trigger a payment request straight to the customer’s banking app (currently **Capitec Bank** only).

No heavy integration, no complex checkout—just a simple path to getting paid.

***

## **Types of Payment Requests**

| Type                 | How it works                                                                 | Best for                                          |
| -------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------- |
| **Link**             | Create a URL that opens a secure checkout page.                              | One-time payments, DMs/WhatsApp, invoices.        |
| **Push (Bank Push)** | We send a payment request to the customer’s bank app; they approve it there. | High-trust flows, phone orders, COD, collections. |

<Warning>
  <strong>Push (Bank Push)</strong> is in <em>Beta</em> and currently supports <strong>Capitec Bank</strong> only. More banks coming soon.
</Warning>

***

## **Key Features**

* **No Partial Payments:** Simplifies reconciliation by allowing only full payments.
* **Multi-Channel Sharing (Links):** Send via SMS, WhatsApp, email, or social.
* **Real-Time Tracking:** Monitor status in the dashboard or via webhooks.
* **Secure Checkout:** PCI DSS, OTPs, 3D Secure, and fraud controls.
* **Multiple Payment Methods (Links):** Cards, mobile money, bank transfers, and more.
* **Fast Onboarding:** Get started in minutes.
* **No-Code Friendly (Links):** Create and manage links from the dashboard (coming soon).
* **Boost Cash Flow:** Reminders, expiries, and smart retries.
* **High Conversion:** Optimized UX on a reliable, fast platform.
* **Effortlessly Scalable:** Works for 10 or 10,000+ requests.
* **Low Friction (Push):** No card entry; customer approves in their bank app.
* **Lower Fraud Risk (Push):** Bank-authenticated approval flow.

***

## **Common Use Cases**

| Use Case                              | Description                                                        |
| ------------------------------------- | ------------------------------------------------------------------ |
| **Freelancers**                       | Request payments for services—no code or setup.                    |
| **Retail Stores**                     | Share links for phone or WhatsApp orders without a website or PoS. |
| **Home Businesses**                   | Accept payments for custom orders (cakes, clothing, crafts).       |
| **Education & Clubs**                 | Collect fees, tuition, or event registrations.                     |
| **Medical Practitioners**             | Take appointment prepayments via SMS or email.                     |
| **Delivery Agents**                   | Payment on delivery without cash handling.                         |
| **Sales Teams**                       | Send instant payment requests post-deal closure.                   |
| **Event Organizers**                  | Charge for RSVPs, tickets, or booth bookings.                      |
| **Real Estate Agents**                | Collect token/booking amounts for viewings or reservations.        |
| **Subscription Sellers**              | Charge one-off or recurring dues without a full billing system.    |
| **Call Centers / Collections (Push)** | Trigger bank-approved payments during a live call.                 |

<Tip>
  Need help deciding between <strong>Links</strong> and <strong>Push</strong>? Use <strong>Links</strong> for broad reach and instant sharing. Use <strong>Push</strong> when your customer is on a call/chat and can approve directly in their banking app (Capitec).
</Tip>

***

## **How It Works**

### **A. Links**

1. Create a payment request (dashboard or API).
2. Share the unique URL via WhatsApp, SMS, email, or social.
3. Customer opens the secure checkout.
4. Customer pays with their preferred method.
5. You receive real-time status updates.

### **B. Push (Bank Push – Capitec)**

1. Create a push payment request via API (include customer identifier).
2. The customer receives a payment prompt in their **Capitec** app.
3. The customer reviews and **approves** the request.
4. Status updates flow to your system via API/webhooks.

<Note>
  For Push, the customer must have an active and reachable Capitec banking app. The authorization window may be time-limited.
</Note>

***

## **Ways to Create Payment Requests**

Moment supports both no-code and developer options.

### **1) Dashboard (No-Code)**

**Ideal for:** Teams wanting a manual, no-code flow. Our Client Portal Dashboard supports both single Payment Request creation and Bulk Payment Request creation (file upload with option to download batch of payment request links).

Steps:

1. Log in to the dashboard
2. Open **Payment Requests**
3. Click **Create Payment Request**
4. Decide if you want to send it immediately via SMS, or just generate the link and send it later to your customer directly.
5. Enter amount, currency, description, expiry (optional)
6. Create the payment request
7. If send later, Share it with your customer

See our [Payment Request guide](https://docs.momentco.io/guides/payment-flows/payment-request) for more detailed information and step-by-step directions.

> Push (Bank Push) creation from dashboard is planned for a future release.

***

### **2) API Integration**

**Ideal for:** Automating flows from CRMs, ERPs, or order systems.

#### **Links**

* **Create:** `POST /collect/payment_requests` with type `link`, this returns a unique `link_url` which can be forwarded for payment.
* **Retrieve:** `GET /collect/payment_requests/:id`
* **Webhook events:** Created, Paid & Updated.

#### **Push (Capitec)**

* **Create:** `POST /collect/payment_requests`  with type `push`, this should send a push notification to the banking app.
* **Retrieve:** `GET /collect/payment_requests/:id`
* **Webhook events:** Created, Paid & Updated.

***

## **Status Lifecycles**

```mermaid theme={"system"}
stateDiagram-v2
    [*] --> active : Created
    active --> expired : Expired after time limit
    active --> paid : Payment Succeeded
    active --> failed : Payment failed
```

| Status      | Links                               | Push                                                          |
| ----------- | ----------------------------------- | ------------------------------------------------------------- |
| **active**  | Link has been created and is valid. | Payment request created and notification sent to banking app. |
| **paid**    | Payment completed successfully.     | Payment completed successfully.                               |
| **expired** | Link expired (default: 24h).        | Authorization or validity window elapsed without approval.    |
| **failed**  | N/A                                 | Payment failed or was declined by the customer.               |

## **Customization Options**

**Links** support:

* **Logo/Branding**
* **Payment description**
* **Link expiry**
* **External Reference** (tags or internal references)
* **Metadata**

**Push** uses the bank’s UI for approval. You can still pass:

* **Description / Reference** (shown to the customer in-app where supported)
* **External Reference & Metadata** (for your internal reconciliation)

***

## **Getting Started**

1. **Sign up** as a Moment merchant
2. Choose **Links** or **Push** for your use case
3. Create the request
4. Share the **link** or let the **bank app** prompt the customer (Push)
5. Track status via **API** and **Webhooks**

***

## **Webhooks**

Moment sends webhook events to your registered endpoint as a payment request moves through its lifecycle. Use these to trigger downstream workflows, send confirmations, or update internal records.

* **`payment_request.created`** — Triggered when a payment request is created. See [payment\_request.created](/api-reference/collect/payment_requests/webhook/created).
* **`payment_request.updated`** — Triggered when a payment request status changes. See [payment\_request.updated](/api-reference/collect/payment_requests/webhook/updated).
* **`payment_request.paid`** — Triggered when a payment request is fully paid. See [payment\_request.paid](/api-reference/collect/payment_requests/webhook/paid).

See [Webhook Setup](/api-reference/webhooks/setup) to register your endpoint and [Webhook Verification](/api-reference/webhooks/verification) to validate incoming events.

***

## **Next Steps**

* 👉 [Payment Requests API Reference](/api-reference/collect/payment_requests/overview)<br />
* 👉 [Webhook Events](/api-reference/collect/payment_requests/webhook/created)
