Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,18 @@
{
"group": "🚀 Get Started",
"pages": [
"use-cases/welcome"
"use-cases/welcome",
"use-cases/quickstart"
]
},
{
"group": "🎯 Use Cases",
"pages": [
"use-cases/no-code-payment-links",
"use-cases/programmatic-payment-links",
"use-cases/multi-chain-checkout",
"use-cases/batch-payouts",
"use-cases/webhook-reconciliation"
]
}
]
Expand All @@ -51,6 +62,7 @@
"pages": [
"api-setup/getting-started",
"api-setup/integration-tutorial",
"tools/dashboard",
Comment thread
rodrigopavezi marked this conversation as resolved.
"api-features/client-id-management"
]
},
Expand Down Expand Up @@ -149,6 +161,13 @@
"resources/token-list"
]
},
{
"group": "🛠️ Tools",
"pages": [
"tools/dashboard",
"tools/secure-payments"
]
},
{
"group": "🏗️ Architecture",
"pages": [
Expand Down
124 changes: 124 additions & 0 deletions tools/dashboard.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
---
title: "Dashboard"
description: "dashboard.request.network — sign in with your wallet to manage payment destinations, Client IDs, incoming payment requests, and outgoing payouts."
---

The **Request Network Dashboard** ([dashboard.request.network](https://dashboard.request.network)) is the no-code home for everything you do with Request Network as a receiver: setting up where you want to be paid, generating API credentials, sending and receiving payment links. Sign in with an EVM or Tron wallet — no email, no password.

<Frame>
<img src="/images/dashboard/home-with-destination.webp" alt="Dashboard home with active payment destination" />
</Frame>

## Sign-in

EVM and Tron are co-equal sign-in methods. The login screen offers parallel tabs:

<Tabs>
<Tab title="EVM">
Connect MetaMask, Coinbase Wallet, WalletConnect, or any injected EIP-1193 provider. The Dashboard issues a SIWE challenge; you sign with `personal_sign`.

Check warning on line 18 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L18

Did you really mean 'Coinbase'?

<Frame>
<img src="/images/dashboard/login-evm.webp" alt="Dashboard sign-in (EVM)" />
</Frame>
</Tab>
<Tab title="Tron">
Connect TronLink, Guarda, Trust, or WalletConnect-Tron. The auth-api detects your `T...` address and issues a Tron-formatted challenge; you sign with `tronWeb.trx.signMessageV2`.

Check warning on line 25 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L25

Did you really mean 'Guarda'?

<Frame>
<img src="/images/dashboard/login-tron.webp" alt="Dashboard sign-in (Tron)" />
</Frame>
</Tab>
</Tabs>

The session is a 15-minute idle-timeout cookie shared across `dashboard.request.network`, `auth.request.network`, and `api.request.network`.

## Payment destinations

A **payment destination** registers where you want to receive payments. It's a single chain × token × wallet combo, encoded as an [ERC-7828 humanReadableInteropAddress](/api-features/payee-destinations).

<Frame>
<img src="/images/dashboard/create-destination.webp" alt="Create payment destination dialog" />
</Frame>

Supported chain × token combinations (8 networks):

| Chain | Tokens |
| --- | --- |
| Ethereum, Arbitrum One, Optimism, Base, Polygon, BSC | USDC, USDT |

Check warning on line 47 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L47

Did you really mean 'Ethereum'?

Check warning on line 47 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L47

Did you really mean 'Arbitrum'?
| **Tron** | USDC, USDT (TRC-20) |
| Sepolia (testnet) | FAU, USDC, USDT |

Check warning on line 49 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L49

Did you really mean 'Sepolia'?

Check warning on line 49 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L49

Did you really mean 'testnet'?

You can switch your active destination at any time via **Manage Destination → Update Receiving Route**.

## Client ID management

Client IDs are the credential the Dashboard (and your own apps) use to call the API on your behalf. Each Client ID can be:

- **Domain-restricted** (frontend use) — set `allowedDomains` to one or more HTTPS origins
- **Backend-only** — leave `allowedDomains` empty for server-side use
- **Fee-aware** — set a default `feePercentage` and `feeAddress`
- **Operator-aware** — bind `operatorWalletAddress` for commerce payment flows
- **Destination-bound** — bind `payeeDestinationId` for orchestrator patterns

<Frame>
<img src="/images/dashboard/manage-destination.webp" alt="Manage destination and Client IDs" />
</Frame>

<Frame>
<img src="/images/dashboard/generate-client-id.webp" alt="Generate Client ID dialog" />
</Frame>

For full field reference, see [Client ID Management](/api-features/client-id-management).

## Get Paid

The **Get Paid** tab is your incoming-payments view. Create a request — amount, currency, optional reference and payer identifier — and the Dashboard generates a `pay.request.network` link to share.

<Frame>
<img src="/images/dashboard/get-paid-list.webp" alt="Get Paid list" />
</Frame>

Each request shows status (Pending / Paid), the on-chain transaction hash once paid, and a copyable payment URL. Works identically for EVM and Tron destinations (single recipient on Tron).

<Frame>
<img src="/images/dashboard/get-paid-detail.webp" alt="Request detail with payment link" />
</Frame>

## Pay (outgoing)

The **Pay** tab is your outgoing-payments view. Create a payment to one or more recipients on the same chain, sign the resulting transaction, and the Dashboard tracks settlement.

<Frame>
<img src="/images/dashboard/pay-list.webp" alt="Pay list (outgoing payouts)" />
</Frame>

| Outgoing flow | EVM | Tron |
| --- | --- | --- |
| Single payout | ✓ | ✓ |
| Batch payout (one signature, many recipients) | ✓ | ✗ |

For Tron payouts, send single payments per recipient. EVM batch payouts are documented at [Batch payouts](/use-cases/batch-payouts).

## What the Dashboard does *not* do

- It is not an admin / merchant control panel for downstream platforms — it's a user dashboard for your own wallet.
- It does not manage webhooks today — webhooks are managed via the [auth-api](https://auth.request.network/open-api).
- It does not host the payer-side checkout — that's [Secure Payment](/tools/secure-payments) at `pay.request.network`.

## Open the Dashboard

<Card title="Open dashboard.request.network" href="https://dashboard.request.network" icon="arrow-up-right-from-square">
Sign in with your EVM or Tron wallet to start.
</Card>

## Related

<CardGroup cols={2}>
<Card title="Quickstart" href="/use-cases/quickstart" icon="rocket">
End-to-end walkthrough using the Dashboard.

Check warning on line 118 in tools/dashboard.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/dashboard.mdx#L118

Did you really mean 'walkthrough'?
</Card>

<Card title="Secure Payment" href="/tools/secure-payments" icon="lock">
The payer-facing companion at pay.request.network.
</Card>
</CardGroup>
146 changes: 146 additions & 0 deletions tools/secure-payments.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
---
title: "Secure Payment"
description: "pay.request.network — the hosted payment link app payers open to settle a Request Network payment. Defense-in-depth, multi-chain, EVM + Tron."
---

**Secure Payment** ([pay.request.network](https://pay.request.network)) is the hosted page your payers land on when they click a payment link. It's a defense-in-depth checkout: trusted contract addresses are hardcoded, every transaction is decoded and verified client-side, and the payer can pay from any of 8 supported chains in any supported wallet.

Check warning on line 6 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L6

Did you really mean 'hardcoded'?

<Frame>
<img src="/images/secure-payments/payment-options.webp" alt="Secure Payment options view" />
</Frame>

## Why it exists

The Secure Payment page is intentionally separated from the merchant frontend so a compromised merchant site or API endpoint can't trick a payer into signing the wrong transaction. The page:

- Loads payment metadata from the Request API using a one-time token
- Validates every contract address against a hardcoded trusted set

Check warning on line 17 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L17

Did you really mean 'hardcoded'?
- Decodes the transaction calldata and shows the payer what they're about to sign

Check warning on line 18 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L18

Did you really mean 'calldata'?
- Resolves payee addresses to ENS where available
- Refuses to broadcast if anything looks off

## What the payer sees

<Steps>
<Step title="Open the link">
The payer clicks a `pay.request.network/?token=...` URL you generated via [`POST /v2/secure-payments`](/api-reference/secure-payments). The page loads payment details (amount, recipient, reference).
</Step>

<Step title="Connect a wallet">
The connect modal lists EVM and Tron wallets side by side.

<Frame>
<img src="/images/secure-payments/connect-wallet.webp" alt="Connect wallet modal — EVM" />
</Frame>

<Frame>
<img src="/images/secure-payments/connect-wallet-tron.webp" alt="Connect wallet modal — Tron" />
</Frame>
</Step>

<Step title="Choose a chain and token">
The page reads the connected wallet's balances across supported chains and surfaces every chain × token combo with a sufficient balance. Same-chain payments show no swap; cross-chain shows a Li.Fi banner.

<Frame>
<img src="/images/secure-payments/payment-options-crosschain.webp" alt="Cross-chain payment options" />
</Frame>
</Step>

<Step title="Approve and sign">
For ERC-20s, an approval transaction precedes the payment. The page shows a stepper (connect → confirm → setup → pay) and an optional **Advanced** view that decodes the calldata for inspection.

Check warning on line 50 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L50

Did you really mean 'calldata'?

<Frame>
<img src="/images/secure-payments/advanced-view.webp" alt="Advanced view with decoded calldata" />
</Frame>
</Step>

<Step title="Confirm">
The success screen shows the source and destination transaction hashes, with explorer links per chain. For cross-chain payments, a Li.Fi badge is displayed.

<Frame>
<img src="/images/secure-payments/payment-success.webp" alt="Payment success screen" />
</Frame>
</Step>
</Steps>

## Wallet support

| EVM wallets | Tron wallets |
| --- | --- |
| MetaMask | TronLink |
| Coinbase Wallet | Guarda |

Check warning on line 71 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L71

Did you really mean 'Coinbase'?

Check warning on line 71 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L71

Did you really mean 'Guarda'?
| WalletConnect (any wallet that supports it) | Trust Wallet |
| Any injected EIP-1193 provider (Rabby, Phantom-EVM, Bitget, OKX, Ledger, …) | WalletConnect-Tron |

Check warning on line 73 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L73

Did you really mean 'Rabby'?

Check warning on line 73 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L73

Did you really mean 'Bitget'?

EVM and Tron are presented as co-equal columns — neither is hidden behind a more-options click.

<Note>
TronLink also injects an EVM provider that converts Tron addresses to EVM-style. Secure Payment **filters this out** of the EVM wallet list because it would mis-route Tron payments — Tron is handled exclusively via the TronWeb integration.
</Note>

## Cross-chain via Li.Fi

When the payer's selected source chain differs from the destination chain, Secure Payment routes through Li.Fi. The UI displays:

- "You'll be paying across chain via [Li.Fi](https://li.fi/)" on the options view
- The bridge fee in the cost breakdown
- A Li.Fi badge on the success screen

Supported source chains for Li.Fi swap-to-pay: Ethereum, Arbitrum One, Optimism, Base, Polygon, BSC, Tron.

Check warning on line 89 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L89

Did you really mean 'Ethereum'?

Check warning on line 89 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L89

Did you really mean 'Arbitrum'?

## Tron support

Tron is fully supported as both a **source** and a **destination** for single-recipient payments:

| Direction | Same-chain | Cross-chain (Li.Fi) |
| --- | --- | --- |
| Tron → Tron (USDT/USDC) | ✓ | — |
| EVM → Tron | — | ✓ |
| Tron → EVM | — | ✓ |

<Warning>
**Multi-recipient Tron Secure Payments are not supported.** A Secure Payment link with multiple `requests[]` entries pointing at Tron destinations is rejected at creation time with a 400. EVM batches up to 200 payees per link work as expected.
</Warning>

## Error states

The Secure Payment app handles a few well-defined error states with clear copy:

| State | Message |
| --- | --- |
| Link expired (>7 days, or already paid expired) | "You are coming too late. Please contact the recipient to send you a new payment link." |
| Token not found / invalid URL | "This URL is invalid. Please check the link and try again, or contact the recipient of this payment." |
| Already paid | "If that is not the case, please check the link and try again, or contact the recipient of this payment." |
| Calldata validation fails | "There is an issue with this payment call data. Please contact the recipient to send you a new payment link." |

Check warning on line 114 in tools/secure-payments.mdx

View check run for this annotation

Mintlify / Mintlify Validation (requestnetwork) - vale-spellcheck

tools/secure-payments.mdx#L114

Did you really mean 'Calldata'?

## What Secure Payment does *not* do

- It does **not** persist transaction history beyond the immediate confirmation screen — explorers and webhook events are the source of truth.
- It does **not** provide a payee-side dashboard — that's [Dashboard](/tools/dashboard) at `dashboard.request.network`.
- It does **not** accept payments without a backing Request — the link must originate from `POST /v2/secure-payments`.

## Open Secure Payment

<Card title="Open pay.request.network" href="https://pay.request.network" icon="arrow-up-right-from-square">
Try a payment link in the live app.
</Card>

## Related

<CardGroup cols={2}>
<Card title="Multi-chain checkout" href="/use-cases/multi-chain-checkout" icon="shuffle">
The payer experience and how it routes across chains.
</Card>

<Card title="Programmatic payment links" href="/use-cases/programmatic-payment-links" icon="code">
The API call that mints these links.
</Card>

<Card title="Secure Payments reference" href="/api-reference/secure-payments" icon="lock">
Full request/response schemas.
</Card>

<Card title="Dashboard" href="/tools/dashboard" icon="gauge">
The payee-side companion.
</Card>
</CardGroup>
Loading