---
url: /razorpay-acellemail/features/direct-payment.md
description: >-
  Take one-time invoice payments in AcelleMail through Razorpay checkout — UPI,
  cards, net banking and wallets — confirmed server-side and signature-verified.
---

# Direct Payment

The **Razorpay** gateway processes one-time invoice payments via Razorpay's hosted checkout in **INR**, with server-side validation prior to marking invoices paid.

## What your customer sees

Choosing **Razorpay** at checkout opens Razorpay's payment window under the heading *"Complete Your Payment"*. Available methods:

| Method | Covers |
| --- | --- |
| **UPI** | Google Pay, PhonePe, Paytm and any UPI app |
| **Cards** | Credit and debit cards |
| **Net banking** | Direct bank transfer |
| **Wallets** | Popular Indian wallets |

![The Razorpay checkout window opening for a one-time payment](/razorpay-acellemail/img/razorpay-direct-payment-checkout.png)
*Admin → Payment Gateways → Razorpay*

Payment credentials remain securely on Razorpay's infrastructure; sensitive card details never touch your server.

## What happens after they pay

The customer sees one of three messages:

| Message | Meaning |
| --- | --- |
| *"Payment successful. Thank you!"* | The payment went through; the invoice is settled. |
| *"Payment could not be completed. Please try again."* | The attempt failed; the customer can retry. |
| *"Payment was cancelled."* | The customer closed checkout without paying. |

Payment confirmation is displayed only after server-to-server verification with Razorpay APIs.

## How the payment is trusted

1. **Signature generation:** Razorpay returns transaction parameters with an HMAC signature.
2. **Local verification:** The plugin recomputes the signature using your secret and rejects mismatches.
3. **Server validation:** Payment status is verified directly against Razorpay APIs before settling invoices.

This verification pipeline blocks URL replay attacks and client-side tampering. See [Security](/razorpay-acellemail/features/security).

## Currency

The Razorpay gateway is **INR-only**. No plan mapping is required; the amount comes straight from the AcelleMail invoice.

::: tip Test before you go live
While your API keys start with `rzp_test_`, every payment runs in test mode. Switch to `rzp_live_` keys when ready — see [Going live](/razorpay-acellemail/guides/going-live).
:::

## Related pages

* [Subscriptions](/razorpay-acellemail/features/subscriptions) — recurring billing via Razorpay
* [Security](/razorpay-acellemail/features/security) — signature verification and server-side confirmation
* [Configuration](/razorpay-acellemail/configuration) — enter your keys and enable the gateway
* [Get your API keys](/razorpay-acellemail/guides/get-api-keys) — Key ID and Key Secret
* [Errors](/razorpay-acellemail/errors) — payment message reference
