> ## Documentation Index
> Fetch the complete documentation index at: https://requestnetwork-docs-openapi-secure-payments.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a secure payment entry

> Creates a secure payment entry with a token. Accepts an array of payment requests using destination IDs (composite ERC-7828 payee address + token address). The server resolves chain, wallet, and currency from each destination ID. Single item creates a single incoming payment. Multiple items preserve the legacy incoming-payment batch shape and are unrelated to multicall payout parents; create multicall payout parents only through /v2/secure-payments/multicall-payouts. All requests must resolve to the same network. Returns a secure payment URL.



## OpenAPI

````yaml /api-reference/openapi.v2.json post /v2/secure-payments
openapi: 3.0.0
info:
  title: Request Network API
  description: API for easily creating and paying Requests with Request Network.
  version: 0.13.0
  contact: {}
servers:
  - url: https://api.request.network
    description: Production server
  - url: https://api.stage.request.network
    description: Staging server
  - url: http://127.0.0.1:8080
    description: Local development server
security: []
tags:
  - name: V2/Request
    description: Core payment request operations (V2)
  - name: V2/Payments
    description: Payment search and management operations (V2)
  - name: V2/Payouts
    description: Pay a request without creating one first (V2)
  - name: V2/Payer
    description: Crypto-to-fiat payer management operations (V2)
  - name: V2/Currencies
    description: Currency operations (V2)
  - name: V2/Client IDs
    description: Client ID management (V2)
  - name: V2/Secure Payment
    description: Secure payment operations with token-based access (V2)
  - name: V2/Payee Destination
    description: Payee destination management (V2)
externalDocs:
  description: Request Network Docs
  url: https://docs.request.network/request-network-api
paths:
  /v2/secure-payments:
    post:
      tags:
        - V2/Secure Payment
      summary: Create a secure payment entry
      description: >-
        Creates a secure payment entry with a token. Accepts an array of payment
        requests using destination IDs (composite ERC-7828 payee address + token
        address). The server resolves chain, wallet, and currency from each
        destination ID. Single item creates a single incoming payment. Multiple
        items preserve the legacy incoming-payment batch shape and are unrelated
        to multicall payout parents; create multicall payout parents only
        through /v2/secure-payments/multicall-payouts. All requests must resolve
        to the same network. Returns a secure payment URL.
      operationId: SecurePaymentController_createSecurePayment_v2
      parameters:
        - name: x-api-key
          in: header
          description: >-
            API key for authentication (optional if using Client ID, session, or
            orchestrator key)
          required: false
          schema:
            type: string
        - name: x-client-id
          in: header
          description: >-
            Client ID for frontend authentication (required when paired with
            orchestrator key)
          required: false
          schema:
            type: string
        - name: x-orchestrator-key
          in: header
          description: Orchestrator key for authentication (must be paired with Client ID)
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: >-
            Bearer token for session authentication (or use the session_token
            cookie). Only consulted when no x-orchestrator-key, x-api-key, or
            x-client-id header is present.
          required: false
          schema:
            type: string
        - name: Origin
          in: header
          description: >-
            Origin header (required for Client ID / orchestrator auth,
            automatically set by browser)
          required: false
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                requests:
                  type: array
                  items:
                    type: object
                    properties:
                      destinationId:
                        type: string
                        minLength: 1
                        description: >-
                          Destination ID in composite format: ERC-7828 payee
                          address + token address, separated by ':' (e.g.
                          '0x742d...bEb0@eip155:11155111#80B12379:0x370D...623C').


                          Optional. The server always resolves the destination
                          itself — from the payee destination bound to the
                          authenticating Client ID, falling back to the
                          platform's active destination — so you can omit this
                          field whenever the Client ID has a bound payee
                          destination. When you do send it, it must equal the
                          resolved destination ID: a different value is rejected
                          with 403 'Destination does not match the configured
                          payment destination.' Every item in `requests[]`
                          therefore resolves to the same destination. A backend
                          Client ID (one with no allowed domains) must be bound
                          to a payee destination, otherwise creation fails with
                          403.
                      amount:
                        type: string
                        description: The payable amount, in human readable format
                    required:
                      - amount
                  minItems: 1
                  description: >-
                    Array of payment requests. Single item = single incoming
                    payment. Multiple items preserve the legacy incoming-payment
                    batch shape and are unrelated to multicall payout parents. A
                    batch varies only the amounts: every item resolves to the
                    caller's single configured destination, so one create call
                    cannot collect into several different payee destinations.
                feePercentage:
                  type: string
                  description: >-
                    DEPRECATED. Legacy fee percentage; ignored. Fees are now
                    resolved server-side from the fee plan snapshot.
                feeAddress:
                  type: string
                  description: >-
                    DEPRECATED. Legacy fee recipient; ignored. Fees are now
                    resolved server-side from the fee plan snapshot.
                reference:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Merchant reference for receipt tracking and identification
                payerIdentifier:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Payer identifier for tracking who is making the payment
                redirectUrl:
                  type: string
                  description: URL the payer is redirected to after a successful payment
                redirectLabel:
                  type: string
                  minLength: 1
                  maxLength: 255
                  pattern: ^[^<>&"'`]*$
                  description: Optional label describing the redirect destination
                accessPolicy:
                  type: object
                  properties:
                    mode:
                      type: string
                      enum:
                        - inherit
                        - 'off'
                        - kyt_all_wallets
                    screeningProvider:
                      type: string
                      enum:
                        - hypernative
                        - merklescience
                      nullable: true
                    hideUntilApproved:
                      type: boolean
                    hidePayeeAddress:
                      type: boolean
                    allowedPayerAddresses:
                      type: array
                      items:
                        type: string
                  description: >-
                    Optional per-payment access policy override. If omitted, the
                    payment inherits the destination access policy.
              required:
                - requests
            examples:
              singlePayment:
                summary: Single payment example
                value:
                  requests:
                    - destinationId: >-
                        0x6923831ACf5c327260D7ac7C9DfF5b1c3cB3C7D7@eip155:11155111#A1B2C3D4:0x370DE27fdb7D1Ff1e1BaA7D11c5820a324Cf623C
                      amount: '10'
              singlePaymentResolvedDestination:
                summary: Single payment, destination resolved from the Client ID
                value:
                  requests:
                    - amount: '10'
              singlePaymentWithFees:
                summary: Single payment with fees example
                value:
                  requests:
                    - destinationId: >-
                        0x6923831ACf5c327260D7ac7C9DfF5b1c3cB3C7D7@eip155:11155111#A1B2C3D4:0x370DE27fdb7D1Ff1e1BaA7D11c5820a324Cf623C
                      amount: '10'
                  feePercentage: '2.5'
                  feeAddress: '0x6923831ACf5c327260D7ac7C9DfF5b1c3cB3C7D7'
              batchPayment:
                summary: >-
                  Legacy incoming batch payment example (every item resolves to
                  the same destination)
                value:
                  requests:
                    - destinationId: >-
                        0x6923831ACf5c327260D7ac7C9DfF5b1c3cB3C7D7@eip155:11155111#A1B2C3D4:0x370DE27fdb7D1Ff1e1BaA7D11c5820a324Cf623C
                      amount: '10'
                    - destinationId: >-
                        0x6923831ACf5c327260D7ac7C9DfF5b1c3cB3C7D7@eip155:11155111#A1B2C3D4:0x370DE27fdb7D1Ff1e1BaA7D11c5820a324Cf623C
                      amount: '5'
      responses:
        '201':
          description: Secure payment entry created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestIds:
                    type: array
                    items:
                      type: string
                    description: Array of request IDs created for this secure payment
                  securePaymentUrl:
                    type: string
                    format: uri
                    description: URL to the secure payment page
                  token:
                    type: string
                    description: Secure payment token
                  feePlan:
                    type: object
                    properties:
                      version:
                        type: number
                        enum:
                          - 1
                      flow:
                        type: string
                        enum:
                          - get_paid
                          - pay
                      defaultFeeBearer:
                        type: string
                        enum:
                          - payer
                          - payee
                      grossAmountUsd:
                        type: string
                      netRecipientAmountUsd:
                        type: string
                      payerTotalAmountUsd:
                        type: string
                      totalFeesUsd:
                        type: string
                      payeeBorneFeesUsd:
                        type: string
                      payerBorneFeesUsd:
                        type: string
                      fees:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                            label:
                              type: string
                            feeBearer:
                              type: string
                              enum:
                                - payer
                                - payee
                            feeBearerSource:
                              type: string
                              enum:
                                - fee_config
                                - payment_default_override
                                - flow_default
                                - forced_fee_policy
                            percentageBps:
                              type: number
                            capUsd:
                              type: string
                              nullable: true
                            fixedAmountUsd:
                              type: string
                              nullable: true
                            calculatedAmountUsd:
                              type: string
                            destinationResolver:
                              type: string
                            destinationRef:
                              type: object
                              properties:
                                evmAddress:
                                  type: string
                                tronAddress:
                                  type: string
                            configSource:
                              type: string
                          required:
                            - type
                            - label
                            - feeBearer
                            - feeBearerSource
                            - percentageBps
                            - capUsd
                            - calculatedAmountUsd
                            - destinationResolver
                            - destinationRef
                            - configSource
                    required:
                      - version
                      - flow
                      - defaultFeeBearer
                      - grossAmountUsd
                      - netRecipientAmountUsd
                      - payerTotalAmountUsd
                      - totalFeesUsd
                      - payeeBorneFeesUsd
                      - payerBorneFeesUsd
                      - fees
                    description: >-
                      Resolved fee plan snapshot. Null when fees don't apply —
                      e.g. non-stablecoin currency, or a batch that spans
                      multiple currencies (not yet supported).
                    nullable: true
                required:
                  - requestIds
                  - securePaymentUrl
                  - token
                  - feePlan
              examples:
                singlePayment:
                  summary: Single payment response
                  value:
                    requestIds:
                      - >-
                        01e273ecc29d4b526df3a0f1f05ffc59372af8752c2b678096e49ac270416a7cdb
                    securePaymentUrl: https://secure.request.network/01ABC123DEF456GHI789JKL
                    token: 01ABC123DEF456GHI789JKL
                batchPayment:
                  summary: Batch payment response
                  value:
                    requestIds:
                      - >-
                        01e273ecc29d4b526df3a0f1f05ffc59372af8752c2b678096e49ac270416a7cdb
                      - >-
                        01e273ecc29d4b526df3a0f1f05ffc59372af8752c2b678096e49ac270416a7cde
                    securePaymentUrl: https://secure.request.network/01ABC123DEF456GHI789JKL
                    token: 01ABC123DEF456GHI789JKL
        '400':
          description: >-
            Invalid request body, no active payment destination for the
            platform, `requests[]` items resolving to more than one network, or
            a multi-item batch on a TRON network.
        '401':
          description: Unauthorized
        '403':
          description: >-
            The supplied `destinationId` does not match the destination resolved
            for the caller, the authenticated platform is not wallet-based, or a
            backend Client ID (no allowed domains) is not bound to a payee
            destination.
        '429':
          description: Too Many Requests

````