> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platnova.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Payment

> Initiate a payment transfer. Supports instant, scheduled, and recurring payments

## Overview

Send a payment using the specified payment method. Supported methods include **bank\_transfer**, **card**, **mobile\_money**, **tag\_transfer** (wallet-to-wallet), **defi**, **revolut**, **paypal**, **ussd**, **cashapp**, and **zelle**. Provide `from_amount`, `from_wallet_id`, `to_currency`, `payment_method`, and `info` (recipient details; fields depend on the method). For tag transfer, `info` must include `tag_id`. Payments can be instant, scheduled, or recurring.


## OpenAPI

````yaml POST /v1/payments/send
openapi: 3.1.0
info:
  title: API
  version: 1.0.0
  description: >-
    Platnova's Business API allows businesses to issue virtual accounts and
    cards to their employees, vendors, or retail customers. It allows businesses
    to streamline the process of issuing cards, manage spending, and track
    transactions. The API documentation provides information on how to integrate
    our virtual card issuing system into a business's existing systems and
    outlines the features and functionalities of the API, including card and
    account creation, management, and reporting. It also provides technical
    specifications, such as API requests, responses, and authentication
    processes.


    The API documentation is intended for developers and IT teams to use in
    order to effectively implement Platnova solutions into their business
    processes.


    # Authentication/Authorization


    To access any of the resources on the `{BaseUrl}/v1/`, the client has to
    pass pre-defined headers for authentication and authorization.


    The API is secure and only authorized clients can consume the service. There
    are API keys assigned to every business and JWT tokens assigned to every
    account for authentication/authorization.


    ## Bearer Token


    Requests may accept jwt tokens as below.


    ``` json

    Authorization: Bearer <jwt token>

     ```

    ## API Key


    Requests may acccept an api key either in the request headers or as a query
    parameter. Some requests cannot be authorized using an API key.


    ``` json

    X-API-KEY: <api key>

     ```

    OR


    ``` json

    ?api-key=<api key>

     ```

    # Base URL


    [https://sandbox.api.platnova.co](https://sandbox.api.platnova.co)


    # Errors


    Unauthorized API key


    ``` json

    {
        "status": false,
        "data": {},
        "error": [],
        "message": "unauthorized access"
    }

     ```

    Permission Denied


    ``` json

    {
        "status": false,
        "data": {},
        "error": [],
        "message": "unauthorized access: permission denied"
    }

     ```
servers:
  - url: https://api.platnova.com
    description: Production server
  - url: https://sandbox.api.platnova.co
    description: Development server
security:
  - apiKeyAuth: []
tags:
  - name: Customer
    description: Create and manage customers
  - name: Virtual Account
    description: Create and manage virtual accounts
  - name: Card
    description: Create and manage cards
  - name: Wallet
    description: List and manage wallets
  - name: Payment
    description: Send and verify payments
  - name: Transaction
    description: List transactions and generate receipts
  - name: Checkout
    description: Create and retrieve checkout sessions
  - name: Payment Link
    description: Create and manage payment links
  - name: Invoice
    description: Create and manage invoices
paths:
  /v1/payments/send:
    post:
      tags:
        - Payment
      summary: Send payment
      description: >-
        Initiate a payment transfer. Supports instant, scheduled, and recurring
        payments
      operationId: sendPayment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendPaymentRequest'
            example:
              from_amount: 100.5
              from_wallet_id: 43a2b75e-5c59-429e-872a-2a54c7b17e37
              to_currency: NGN
              payment_method: bank_transfer
              info:
                account_number: '0123456789'
                bank_code: '058'
                account_name: John Doe
              is_save_to_beneficiary: false
              reference: txn-001
              payment_type:
                type: instant
      responses:
        '200':
          description: Payment initiated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: boolean
                  data:
                    type: object
                    properties:
                      transaction_ref:
                        type: string
                      status:
                        type: string
                      from_amount:
                        type: number
                      to_amount:
                        type: number
                      from_currency:
                        type: string
                      to_currency:
                        type: string
                      method:
                        type: string
                      created_at:
                        type: string
                  error:
                    type: array
                    items: {}
                  message:
                    type: string
        '400':
          description: >-
            Bad request (e.g. insufficient funds, duplicate reference, invalid
            payload)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Validation error (e.g. invalid info fields for payment method)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError422'
              example:
                error:
                  from_amount:
                    - This field is required
                  from_wallet_id:
                    - This field is required
                  to_currency:
                    - This field is required
                  payment_method:
                    - This field is required
                  info:
                    - This field is required
components:
  schemas:
    SendPaymentRequest:
      type: object
      required:
        - from_amount
        - from_wallet_id
        - to_currency
        - payment_method
        - info
      properties:
        from_amount:
          type: number
          minimum: 0.01
          description: Amount to send (source currency)
        from_wallet_id:
          type: string
          description: Wallet ID to debit from
        to_currency:
          type: string
          description: Destination currency (e.g. NGN, USD)
        payment_method:
          type: string
          description: >-
            One of: card, bank_transfer, mobile_money, wallet, tag_transfer,
            defi, revolut, paypal, cashapp, zelle, ussd
        info:
          type: object
          description: >-
            Recipient details; required fields depend on payment_method (e.g.
            account_number, bank_code, account_name for bank_transfer; tag_id
            for tag_transfer)
        is_save_to_beneficiary:
          type: boolean
          description: Save recipient as beneficiary
        reference:
          type: string
          description: Idempotency or client reference
        document:
          type: string
          description: Base64-encoded document (e.g. invoice)
        payment_type:
          type: object
          properties:
            type:
              type: string
              enum:
                - instant
                - scheduled
                - recurring
            schedule_date:
              type: string
              description: ISO datetime for scheduled (e.g. 2006-01-02T15:04:05Z)
            start_date:
              type: string
              description: 'For recurring: first run date'
            frequency:
              type: string
              description: 'For recurring: e.g. daily, weekly, monthly'
            end:
              type: object
              properties:
                mode:
                  type: string
                  description: date or occurences
                value:
                  type: string
        approver:
          type: string
          description: Account UID to notify for approval (non-owner)
    Error:
      type: object
      properties:
        status:
          type: boolean
        data:
          type: object
        error:
          type: array
          items: {}
        message:
          type: string
          description: Error message
    ValidationError422:
      type: object
      description: Validation error response (422). Keys are request body field names.
      properties:
        error:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Field name to list of error messages
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: API key for authentication.

````