---
title: "One Time Payment"
slug: "components-one-time-payment"
tags: ["Components", "Xendit Components"]
updated: 2026-01-19T03:58:47Z
published: 2026-01-19T03:58:47Z
canonical: "docs.xendit.co/components-one-time-payment"
---

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

# One Time Payment

Payment Sessions allow you to securely collect a payment from your customer **directly within your own website or application** using Xendit Components. This integration embeds **PCI-compliant payment fields** into your checkout UI, ensuring regulatory compliance while keeping customers on your domain.

This flow is commonly used to accept **one-time payments** with a fully branded checkout experience.

**Example usage**

- eCommerce checkout: Collect payment directly on your checkout page without redirecting customers.
- In-app purchases or SaaS billing: Charge customers inside your web or mobile app while maintaining consistent UI and UX.

## How to integrate

Refer to the [Xendit Components integration guide](https://docs.xendit.co/docs/components-overview) for the implementation.

Below is the guideline for the Payment Session request for a one-time payment flow. During checkout, or whenever your customer is ready to make a one-time purchase, your system should create a Payment Session with Xendit using the example payload below.

**Request -**`POST /sessions`

```json
{
    "reference_id": "{{$YOUR_REFERENCE_ID}}",
    "session_type": "PAY",
    "mode": "COMPONENTS",
    "amount": 10000,
    "currency": "IDR",
    "country": "ID",
    "customer": {
        "reference_id": "{{$randomUUID}}",
        "type": "INDIVIDUAL",
        "email": "customer@yourdomain.com",
        "mobile_number": "+628123456789",
        "individual_detail": {
            "given_names": "John",
            "surname": "Doe"
        }
    },
    "components_configuration": {
        "origins": ["https://example.com"]
    }
}
```

**Response -**`POST /sessions`

```json
{
    "payment_session_id": "ps-69649592c951f34f173f803a",
    "created": "2026-01-12T06:32:50.550Z",
    "updated": "2026-01-12T06:32:50.550Z",
    "status": "ACTIVE",
    "reference_id": "{{$YOUR_REFERENCE_ID}}",
    "currency": "IDR",
    "amount": 10000,
    "country": "ID",
    "expires_at": "2026-01-12T07:02:50.059Z",
    "session_type": "PAY",
    "mode": "COMPONENTS",
    "locale": "en",
    "business_id": "62440e322008e87fb29c1fd0",
    "customer_id": "cust-138123c0-50de-49bb-b804-ead0e1e35914",
    "capture_method": "AUTOMATIC",
    "components_sdk_key": "session-907388bd5ccd790edb241bed00c80000-pl-MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE8zNjokzwdcj/11UkV77757+zQCQAc/Hsez5Ue2+UVEVXCKmQlVhpKGBHY1G5TPWIVUs4JdK8xLA9OihdACCRv7Z66B/caBfhU6V+pTXjiZ/OBcCYUP/cm4mkn5qHZ6N8-UQiUzNWiQad32u5F+pHrumyTsAPwCbojrBaEj+kNpsstysk7G6B4i+r7pgTMye860bMB1KVsLbBSMLYRB9gsb7x/5RJV0Y04yQ+sHBzHOLq3ab9g3g+IQ6C2YElXdvWf",
    "components_configuration": {
        "origins": ["https://example.com"]
    }
}
```

You can refer to the [Xendit Components client-side documentation](https://docs.xendit.co/docs/components-overview#clientside-responsibilities) for client-app integration using the returned `components_sdk_key`.

Upon successful payment, Xendit will send a `payment_session.completed` webhook to your system. You should use this webhook to mark the order as **paid.**Optionally, you may also listen to the `payment.capture` webhook to retrieve detailed payment information. Both events are correlated using `payment_id`.
