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

> ## Agent Instructions
> Use hosted checkout for a new payment integration unless the user explicitly needs an SDK or Direct QR flow.
> Keep secret API keys on the server. Never place an sk_test_ or sk_live_ key in browser or mobile code.
> Never treat a browser return URL as proof of payment. Verify a signed webhook and confirm status, amount, and currency on the server before fulfillment.
> Fonepay has no sandbox. A Fonepay payment made from a sandbox project uses the merchant's real Fonepay account and moves real money within the documented caps.
> Do not recommend direct integration with Mobile SDK device endpoints. Use the PayBridgeNP Mobile SDK and the merchant-facing session creation API.

# Customer details at checkout

> Choose which customer details checkout asks for, per project or per checkout, and show contacts you already know as read-only.

No payment method needs the customer's name, email or mobile number. Checkout asks for them so the customer gets a receipt and you have a way to reach them. You decide how much to ask.

## The standard settings

By default, checkout asks for **a mobile number or an email** (the customer chooses), and the name is optional. A value you already sent when you created the checkout counts, so a customer whose phone you passed goes straight to payment.

## Change it for a project

In the dashboard, open **Project settings > Customer details**. For **Mobile number**, **Email** and **Full name**, choose **Required**, **Optional** or **Don't ask**. Turn off **Always get a mobile number or an email** if customers may pay without leaving any contact.

The settings apply to checkouts, payment links and payment buttons created after you save. A checkout keeps the rules it was created with.

## Change it for one checkout

Pass `buyerPolicy` when you create a checkout session. Keys you leave out use your project's settings.

```json theme={null}
{
  "amount": 250000,
  "returnUrl": "https://yourshop.com/thanks",
  "customer": { "phone": "9801234567" },
  "buyerPolicy": {
    "fields": { "name": "required", "email": "optional" },
    "contactRequirement": "email_or_phone"
  },
  "customerLocks": ["phone"]
}
```

* `fields.name`, `fields.email`, `fields.phone`: `required`, `optional` or `off`. A field that is `off` is not asked for; a value you send in `customer` is still used.
* `contactRequirement`: `email_or_phone` (default) or `none`. You cannot turn both email and phone `off` while requiring one of them.

The response includes `buyer_policy`, the rules this checkout will use.

## Change it for one payment link

Send `buyerFieldOverrides` (same shape as `buyerPolicy`) when you create or update a payment link. `null` goes back to your project's settings. Contacts you preset on the link are shown read-only and not asked again.

## Show contacts you already know as read-only

List them in `customerLocks`. Checkout shows them but the customer cannot change them, which keeps your order and the payment in agreement. Each listed field needs a usable value in `customer`: a Nepali mobile number for `phone`, a valid address for `email`. Otherwise the request is refused with a `400`.

The PayBridgeNP Shopify app does this for you: the phone and email from the Shopify order are shown read-only, and only what is missing is asked for.

<Note>
  A locked contact is your record, not a verification. It does not prove the customer owns that phone or email.
</Note>

## Exceptions

* Your own PayBridgeNP plan invoices always ask for name, email and mobile number.
* Invoices you send through billing use the customer saved on the invoice.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.