Quickstart
Create a Merchant and accept your first Naven Payment Intent.
1. Create a Project
Sign in at Naven, open Workspace → Projects, and choose Create project.
Copy the generated naven_api_... key immediately. Naven stores only its hash
and cannot display the full secret again.
Store these values in your backend environment:
NAVEN_API_URL=https://api.naven.network
NAVEN_API_KEY=naven_api_...
NAVEN_MERCHANT_ID=...2. Create a Merchant
Open the Project's Merchants tab and add a Merchant with:
- A descriptive name, such as
Workspace Credits. - The EVM address that should receive the funds.
Copy the Merchant ID. Naven selects the supported network, USDG asset, facilitator, token metadata, and payment timeout.
3. Create a Payment Intent
Call this endpoint from your backend, never from browser code:
curl --request POST 'https://api.naven.network/v1/payment-intents' \
--header "Authorization: Bearer $NAVEN_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"merchantId": "YOUR_MERCHANT_ID",
"amountUsdCents": 9900,
"externalId": "topup_01JABC",
"customerRef": "privy_user_01JABC",
"description": "Workspace credit top-up",
"metadata": {
"workspaceId": "workspace_01JABC"
}
}'The response contains a public paymentUrl:
{
"id": "pi_01JABC",
"merchantId": "YOUR_MERCHANT_ID",
"externalId": "topup_01JABC",
"status": "pending",
"amountUsdCents": 9900,
"currency": "USD",
"paymentUrl": "https://api.naven.network/v1/payment-intents/pi_01JABC/pay",
"network": "eip155:4663",
"asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
"payTo": "0x...",
"transactionHash": null,
"createdAt": "2026-07-21T13:15:00.000Z",
"settledAt": null,
"expiresAt": "2026-07-21T13:30:00.000Z"
}4. Pay the public URL
The browser calls POST paymentUrl without the Project API key. Naven returns
402 Payment Required and an encoded PAYMENT-REQUIRED header. The wallet
client signs the returned requirement and retries the same URL with
PAYMENT-SIGNATURE.
Use the Buyer/Client Guide for the x402 v2 signing flow. Do not reconstruct the amount, asset, network, or receiver in the browser; sign the exact requirement returned by Naven.
5. Confirm from your backend
curl 'https://api.naven.network/v1/payment-intents/pi_01JABC' \
--header "Authorization: Bearer $NAVEN_API_KEY"Only fulfill the order after this server-to-server query returns
"status": "settled".