---
title: "Accept one-time payment"
space: "Integrations"
url: "https://integrations.frappe.cloud/integrations/payment-integration/stripe/accept-payments"
updated: "2026-09-08"
---

Create a Payment Request from a Sales Invoice or Sales Order and share its payment link with the customer.

## Create the Payment Request

Complete the Stripe setup and webhook configuration, use test keys for the first payment, and submit the Sales Invoice or Sales Order that the customer will pay.

1. Open the submitted Sales Invoice or Sales Order.
2. Click **Create &gt; Payment Request** or **Make &gt; Payment Request**, depending on your ERPNext version.
3. Confirm the party, amount, currency, and reference document.
4. Select the Payment Gateway Account created for Stripe.
5. Save and submit the Payment Request.Process one-time payments through Stripe for Sales Invoices, Sales Orders, and custom payment requests using the Hosted Checkout flow.

## Payment Flow Overview

### Standard One-Time Payment Process

```
1. ERPNext Document → 2. Payment Request → 3. Stripe Checkout →
4. Customer Payment → 5. Webhook Confirmation → 6. Payment Entry
```

**Step-by-Step:**

1. **Initiation**: Customer receives invoice/order with payment link
2. **Payment Request**: ERPNext creates Payment Request document
3. **Stripe Redirect**: Customer redirected to Stripe-hosted checkout
4. **Payment**: Customer completes payment on Stripe's secure page
5. **Webhook**: Stripe sends payment confirmation to ERPNext
6. **Reconciliation**: ERPNext creates Payment Entry and updates document status

## Accepting Payments from Different Document Types

### From Sales Invoice

**Most common use case** - customers pay outstanding invoices:

1. **Open Sales Invoice**: Navigate to the invoice to be paid

![](/files/pr.webp)

## Send the customer to Stripe

1. Copy the **Payment URL** from the Payment Request, or send the Payment Request by email.
2. Open the link in a private browser window when testing.
3. Complete the payment on the Stripe-hosted checkout page using a [Stripe test payment method](https://docs.stripe.com/testing).

![](/files/stripe checkoutt.webp)

### Confirm the result in ERPNext

After Stripe confirms the payment, ERPNext:

- Marks the Payment Request as paid
- Creates and submits a Payment Entry for the charged amount
- Allocates the Payment Entry to the reference document
- Updates a Sales Invoice to **Paid** or **Partly Paid**, according to its remaining balance

![](/files/si orig paid.webp)

![](/files/stripe_one-off.mp4)

### Verify the payment

1. Open the Payment Request and follow the linked Payment Entry.
2. Confirm that the Payment Entry amount, currency, reference number, and reference document are correct.
3. Open **Stripe Webhook Log** and confirm the related event is **Processed**.

If Stripe shows a successful payment but ERPNext does not create a Payment Entry, follow [Check whether a payment synced](./sync-log).

## Troubleshooting

- If Stripe is unavailable on the Payment Request, check the company and account on the Stripe Payment Gateway Account.
- If checkout reports an authentication error, verify that Stripe Settings contains a matching, active publishable key and secret key.
- If Stripe shows a successful charge while ERPNext remains unpaid, check the matching Stripe Webhook Log and follow [Check whether a payment synced](./sync-log). Confirm the existing payment before asking the customer to try again.