DojaPay API
    DojaPay API
    • Authentication
      • Generate Access Token
        POST
    • Virtual Account
      • Create Virtual Account
        POST
      • Get Virtual Account Details
        GET
    • Transactions
      • Verify Transaction
        POST
    • Payout
      • Request Payout
        POST
      • Get Bank List
        GET

    Virtual Account

    The Virtual Account in the DojaPay API provides all the necessary endpoints for creating, managing, and reallocating virtual NUBAN accounts. These accounts can be either STATIC (linked permanently to a user or business) or DYNAMIC (created temporarily for a specific transaction or purpose).
    Virtual accounts serve as unique payment identifiers that allow users or customers to make bank transfers directly into your DojaPay-powered wallet. Each endpoint is built to support seamless automation and secure account lifecycle management.

    Key Use Cases Include:#

    Issuing virtual accounts to end-users or merchants for payment collections.
    Reallocating virtual accounts to different users or purposes.
    Setting rules and metadata on accounts (e.g., amount locking, expiry, credit forwarding).
    Handling inflow notifications and validating payment details.

    Available Endpoints:#

    EndpointMethodDescription
    /api/v1/virtual-accounts/createPOSTCreate a new virtual account (STATIC or DYNAMIC) with optional configurations such as expiration time, expected amount, or credit beneficiary.
    /api/v1/virtual-accounts/reallocatePOSTReassign or reuse an existing STATIC virtual account for another user or merchant.
    /api/v1/virtual-accounts/verify-accountPOSTValidate the configuration or status of an existing virtual account by account number.

    Security & Compliance:#

    All requests require a valid Bearer token obtained from the authentication endpoint.
    Sensitive operations are protected with SHA512 hash validation and IP whitelisting.
    Webhooks should respond quickly (within 5 seconds) and handle retries gracefully.

    Best Practices:#

    Always validate webhook hashes before processing.
    Expire DYNAMIC accounts to prevent misuse and clutter.
    WEBHOOK
    {
    "success": true,
    "code": "00",
    "message": [
    "Inflow received and processed successfully."
    ],
    "data": {
    "event_type": "inflow.received",
    "session_id": "100004250806122404138456464678",
    "account_name": "DIGITALCORE/SANI ADAMU",
    "account_number": "5895087656",
    "bank_name": "9PSB",
    "bank_code": "120001",
    "sender_bank_code": "100004",
    "sender_bank_name": "Opay Digital Services",
    "sender_account_number": "7000654300",
    "sender_account_name": "SANI JIBRIN",
    "amount": "500.00",
    "settlement_amount": 480
    },
    "reference": "DJP-20250806132232CZUKTDFQ",
    "timestamp": "2025-08-06T13:24:36+01:00"
    }
    Modified at 2025-11-03 15:35:18
    Previous
    Generate Access Token
    Next
    Create Virtual Account
    Built with