> For the complete documentation index, see [llms.txt](https://ninjapay.gitbook.io/webupi-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ninjapay.gitbook.io/webupi-protocol/how-to/webupi-reference/webupi.sendpayment.md).

# webUPI.sendPayment()

Request that the user sends a payment for a UPI URI. The application needs to provide a UPI URI.

#### **Method**

```jsx

async function sendPayment(upiUri: string): SendPaymentResponse;

```

#### **Parameters**

**`upiUri: string`**` ``// the UPI URI you'd like the user to pay.`

```jsx

interface SendPaymentArgs {
  upiUri: string; // the UPI URI you'd like the user to pay.
  callback_url?: string // Once a user approves or denies a payment, the UPI provider can notify the web app using the provided callback URL.
}

```

#### **Response**

```jsx

interface SendPaymentResponse {
  transactionId: string;
}

```

#### Callback Response

```json
{
  "transactionId": "string",
  "status": "approved/declined"
}

```

#### **Example**

```jsx

const upiUri = "upi://pay?pa=payeeVPA&pn=Payee Name&mc=0000&tid=TransactionId&tr=TransactionRefId&tn=Transaction Note&am=Transaction Amount&cu=INR";
const result = await window.webUPI.sendPayment(upiUri);

```

Also Read UPI Linking Specs to create custom upiUri 👇

{% file src="/files/0hZck3hKXYM2KEI70n18" %}
UPI Linking Specs to create custom upiUri
{% endfile %}
