NavenDocs
NavenDocs
Introduction
OverviewQuickstartIntegration GuideAPI ReferenceFulfillment and Recovery
Back to Naven Network
Payment Intents

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".

Overview

Accept x402 payments through Naven-managed Payment Intents.

Integration Guide

Recommended backend and frontend integration for Naven Payment Intents.

On this page

1. Create a Project2. Create a Merchant3. Create a Payment Intent4. Pay the public URL5. Confirm from your backend