---
url: /cashfree-acellemail/features/direct-payment.md
description: >-
  How the Cashfree gateway takes one-time invoice payments in AcelleMail through
  Cashfree's Drop-in checkout — UPI, cards, net banking and wallets — with the
  outcome always confirmed server-side.
---

# Direct Payment

The **Cashfree** gateway processes one-time invoice payments via Cashfree's **Drop-in checkout**:

* **Payment methods:** UPI, credit/debit cards, net banking, and wallets in a unified hosted sheet.
* **Configuration:** Configure credentials once in Plugin Settings to activate the gateway.
  For recurring billing, use the [Cashfree Subscription](/cashfree-acellemail/features/subscriptions) gateway instead.

::: info INR only
Cashfree processes domestic payments in **Indian Rupees** — only INR-priced invoices are eligible. No plan mapping is needed for direct payments; that applies only to subscriptions.
:::

## What the customer sees

The checkout experience follows three stages:

1. **Payment screen:** Displays **"Complete Your Payment"** with a **"Pay with Cashfree"** button.
2. **Security footer:** Confirmed by **"Secured by Cashfree — UPI, Cards, Net Banking & Wallets"**.
3. **Drop-in sheet:** Clicking the button launches Cashfree's hosted modal to select a payment option.
   ![The Cashfree Drop-in checkout for a one-time invoice](/cashfree-acellemail/img/cashfree-direct-payment-checkout.png)
   *Admin → Payment Gateways → Cashfree*

Because the sheet is hosted by Cashfree, **card details are never entered on or stored by your server** — they go straight to Cashfree.

## How the outcome is confirmed

The payment result is **always confirmed server-side**. When the customer returns from Cashfree, the plugin does **not** trust the browser. Instead it:

1. **Re-fetches the order** directly from Cashfree to read the authoritative status, and
2. **Waits for the signed webhook** Cashfree sends to your endpoint.

Only when the server confirms a genuine success is the invoice marked paid. A tampered or prematurely-returned browser cannot mark an unpaid invoice as paid. See [Security](/cashfree-acellemail/features/security).

::: tip Set up webhooks
For confirmation to arrive reliably, add your endpoint in the Cashfree dashboard. Follow [Configure webhooks](/cashfree-acellemail/guides/configure-webhooks).
:::

## Getting ready

1. Enter **App ID** and **Secret Key** in **Admin → Plugins → Cashfree → Settings**.
2. Enable **Sandbox mode** during staging, then click **Save Settings**.
3. The **Cashfree** gateway appears automatically in **Admin → Payment Gateways**. See [Configuration](/cashfree-acellemail/configuration) and [Get your API keys](/cashfree-acellemail/guides/get-api-keys).

## Related pages

* [Subscriptions](/cashfree-acellemail/features/subscriptions) — recurring billing with mandates
* [Security](/cashfree-acellemail/features/security) — how outcomes and webhooks are verified
* [Configure webhooks](/cashfree-acellemail/guides/configure-webhooks) — add your endpoint
* [Configuration](/cashfree-acellemail/configuration) · [Settings reference](/cashfree-acellemail/settings)
* [Errors](/cashfree-acellemail/errors) · [Troubleshooting](/cashfree-acellemail/troubleshooting)
