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

API Reference

Project, Merchant, and Payment Intent endpoints.

Base URL and interactive reference

https://api.naven.network
  • Interactive OpenAPI explorer
  • Raw OpenAPI JSON

Project management responses use Naven's { code, message, data } envelope. Payment Intent endpoints return the Payment Intent or x402 object directly.

Credentials

Privy identity token

Used only by the signed-in Naven Workspace:

Authorization: Bearer <privy-identity-token>

Project API key

Used only by your backend:

Authorization: Bearer naven_api_...

Project management

MethodPathDescription
GET/v1/projectsList the current user's Projects, key metadata, and Merchants
POST/v1/projectsCreate a Project and one default Project API key
POST/v1/projects/:projectId/api-keysCreate another Project API key
POST/v1/projects/:projectId/merchantsCreate a Merchant with an isolated payTo

The complete API key secret is returned exactly once. Later Project responses include only its prefix and metadata.

Create Payment Intent

POST /v1/payment-intents
Authorization: Bearer naven_api_...
Content-Type: application/json
FieldRequiredDescription
merchantIdyesMerchant belonging to the authenticated Project
amountUsdCentsyesInteger from 100 through 100000000
externalIdyesMerchant-scoped order ID, maximum 200 characters
customerRefnoYour customer ID, maximum 200 characters
descriptionnoHuman-readable payment purpose, maximum 500 characters
metadatanoJSON object, maximum serialized size 16 KiB

The request cannot override payTo, asset, network, facilitator, token metadata, or payment timeout.

Idempotency

(merchantId, externalId) is unique. Retrying the same request returns the existing intent with 200 OK. Reusing the same external ID with different amount, customer reference, description, or metadata returns 409 Conflict.

Get Payment Intent

GET /v1/payment-intents/:intentId
Authorization: Bearer naven_api_...

Returns 404 when the intent does not exist or belongs to another Project. This endpoint is the authoritative source for business fulfillment. failureCode and failureMessage are nullable and describe the latest definitive failure or reconciliation condition.

Reconcile Payment Intent

POST /v1/payment-intents/:intentId/reconcile
Authorization: Bearer naven_api_...

Idempotently checks a settling Robinhood USDG authorization against Naven's indexed facilitator transactions. It returns the current Payment Intent and may move it to settled, or return an expired unused authorization to pending while the Payment Intent itself remains valid. Normal recovery is automatic; this endpoint is available for manual operational recovery.

Pay Payment Intent

POST /v1/payment-intents/:intentId/pay

This endpoint is public and must not receive the Project API key.

Initial response:

402 Payment Required
PAYMENT-REQUIRED: <encoded-x402-v2-requirement>
Cache-Control: no-store

Paid retry:

POST /v1/payment-intents/:intentId/pay
PAYMENT-SIGNATURE: <encoded-x402-v2-payment>

Successful response:

200 OK
PAYMENT-RESPONSE: <encoded-settlement-response>
Cache-Control: no-store
{
  "id": "pi_01JABC",
  "status": "settled",
  "amountUsdCents": 9900,
  "currency": "USD",
  "settlement": {
    "transaction": "0x...",
    "network": "eip155:4663",
    "payer": "0x...",
    "settledAt": "2026-07-21T13:16:12.000Z"
  }
}

Statuses

StatusMeaning
pendingIntent may be paid
settlingVerified payment is being settled or reconciled
settledSettlement succeeded and the unique transaction was saved
failedSettlement returned a definitive failure
expiredThe intent expired before settlement

Error codes

HTTPCodeMeaning
400invalid_requestRequest body failed validation
401project_unauthorizedProject API key is missing or invalid
403project_disabledProject or API key is disabled
403merchant_disabledMerchant was disabled after intent creation
404merchant_not_foundMerchant is not part of the authenticated Project
404intent_not_foundIntent was not found within the access boundary
409intent_conflictExternal ID or current state conflicts with the request
409settlement_in_progressAnother request is settling this intent
409payment_already_usedTransaction already belongs to another intent
409payment_authorization_already_usedAuthorization belongs to another intent
410intent_expiredPayment window ended
429rate_limitedToo many public payment attempts
503facilitator_unavailableVerification or settlement is temporarily unavailable
503settlement_result_unknownSettlement is being reconciled
503reconciliation_unavailableManual reconciliation is temporarily unavailable

Integration Guide

Recommended backend and frontend integration for Naven Payment Intents.

Fulfillment and Recovery

Credit orders exactly once after confirming Naven settlement.

On this page

Base URL and interactive referenceCredentialsPrivy identity tokenProject API keyProject managementCreate Payment IntentIdempotencyGet Payment IntentReconcile Payment IntentPay Payment IntentStatusesError codes