# Payment Requests

Request a payment from a Joey user on the XRP Ledger.

There's no separate payment-request format or tool for Joey. To request a payment, connect to Joey and send a `Payment` transaction for the user to approve. This works with both the browser extension and the mobile app.

## Browser extension

```ts
import { waitForJoey } from '@joeywallet/wallet-sdk'

const joey = await waitForJoey()
const { accounts } = await joey.connect()
const payer = accounts[0].address

const result = await joey.signAndSubmitTransaction({
  tx_json: {
    TransactionType: 'Payment',
    Account: payer,
    Destination: 'rYourMerchantAddress…',
    DestinationTag: 12345, // your invoice or customer reference
    Amount: '2500000',     // 2.5 XRP, in drops
  },
})

const hash = result.hash // confirm the payment on-ledger by hash
```

## Mobile (WalletConnect)

```ts
const result = await provider.request(
  {
    method: 'xrpl_signTransaction',
    params: {
      tx_json: {
        TransactionType: 'Payment',
        Account: payer, // the session account
        Destination: 'rYourMerchantAddress…',
        DestinationTag: 12345,
        Amount: '2500000',
      },
      submit: true,
    },
  },
  'xrpl:0',
);

const hash = result.tx_json.hash;
```

## Tips

- **Identify the payment** with a `DestinationTag`, or with `Memos` for longer references such as invoice IDs.
- **Request tokens** with an issued-currency amount: `{ currency: 'USD', issuer: 'r…', value: '25' }`. The payer needs a trust line for that token.
- **Confirm on-ledger.** Look up the transaction by hash and check it was validated with `tesSUCCESS` and delivered the amount you expect (`delivered_amount`), before treating it as paid.
