Documentation Index Fetch the complete documentation index at: https://docs.payvessel.com/llms.txt
Use this file to discover all available pages before exploring further.
Initialize a new payment transaction to collect money from customers via cards, bank transfers, or mobile wallets.
This endpoint creates a payment session and returns a checkout URL where customers can complete their payment securely.
This is the primary canonical initialization endpoint for both the transaction and checkout flows. It maps to POST /pms/transactions/initialize/, and api-reference/checkout/initialize-transaction is an equivalent alias.
Endpoint
POST /pms/transactions/initialize/
Name Type Required Description api-keystring Required Your API key api-secretstring Required Your API secret Content-Typestring Required Must be application/json
Request Body
Customer’s email address for transaction receipt and notifications
Transaction amount in naira (NGN) or the smallest currency unit For ₦500.00, send "500" (500 naira)
Three-letter ISO currency code Supported currencies: NGN, USD
Unique transaction reference. If not provided, PayVessel will generate one automatically Must be unique across all your transactions
URL to redirect customers after payment completion
Payment methods to allow for this transaction Available channels: BANK_TRANSFERIf not specified, all available channels will be enabled
Customer information object Customer’s email address (alternative to root-level email)
Customer’s phone number in international format
Example Request
curl -X POST https://sandbox.payvessel.com/pms/transactions/initialize/ \
-H "api-key: YOUR_API_KEY" \
-H "api-secret: YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{
"customer_email": "test@example.com",
"customer_name": "Test Customer",
"customer_phone_number": "08012345678",
"amount": "50",
"currency": "NGN",
"channels": [
"BANK_TRANSFER"
]
}'
Response
Request status indicator - "success" or "error"
Human-readable message describing the result
Transaction data object Secure checkout URL where customers complete payment
Access code for the transaction session
Unique transaction reference
Transaction amount in the smallest currency unit
Transaction currency code
Current transaction status - "pending"
ISO 8601 timestamp when transaction was created
Example Response
200 Success
400 Bad Request
401 Unauthorized
{
"status" : true ,
"message" : "Checkout transaction successfully initialized" ,
"data" : {
"id" : "52b9bb2d-01d1-46ac-9800-14d34cb5f882" ,
"transaction_ref" : "B0C866BD914C487895ACB8C45B939017" ,
"amount" : "5000.00" ,
"status" : "PENDING" ,
"access_code" : "TEST-ACS-7AF7VH-2QIHE83N-TCTL28-BSDH" ,
"checkout_url" : "https://checkout.payvessel.com/TEST-ACS-7AF7VH-2QIHE83N-TCTL28-BSDH" ,
"created_datetime" : "2026-04-01T15:46:56.171229"
}
}
After initializing a payment:
Verify Payment Confirm transaction status after payment
Handle Webhooks Receive real-time payment notifications
Webhook Events
This endpoint triggers the following webhook events:
transaction.pending - Transaction created and pending payment
transaction.success - Payment completed successfully
transaction.failed - Payment failed or was declined
Best Practice : Always verify transaction status using the verification endpoint, even after receiving webhook notifications, to ensure data integrity.
Your Payvessel public API key
Available options:
application/json
Transaction amount in naira (for NGN) or minor currency units
Payment channels to enable for this transaction
Available options:
BANK_TRANSFER
Transaction currency code
Available options:
NGN,
USD
Additional information about the transaction
URL to redirect customer after payment completion
Unique transaction reference (optional - auto-generated if not provided)
Transaction initialized successfully
Transaction initialization status