Skip to main content
POST
Initialize Transaction
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/

Request Body

string
required
Customer’s email address for transaction receipt and notifications
string
required
Transaction amount in naira (NGN) or the smallest currency unit
For ₦500.00, send "500" (500 naira)
string
default:"NGN"
Three-letter ISO currency codeSupported currencies: NGN, USD
string
Unique transaction reference. If not provided, PayVessel will generate one automatically
Must be unique across all your transactions
string
URL to redirect customers after payment completion
array
Payment methods to allow for this transactionAvailable channels: BANK_TRANSFER
If not specified, all available channels will be enabled
object
Customer information object

Example Request

Response

string
Request status indicator - "success" or "error"
string
Human-readable message describing the result
object
Transaction data object

Example Response

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.

Headers

api-key
string
required

Your Payvessel public API key

api-secret
string
required

Your Payvessel secret

Content-Type
enum<string>
required

Request content type

Available options:
application/json

Body

application/json
amount
string
required

Transaction amount in naira (for NGN) or minor currency units

channels
enum<string>[]
required

Payment channels to enable for this transaction

Available options:
BANK_TRANSFER
currency
enum<string>
required

Transaction currency code

Available options:
NGN,
USD
customer_name
string
required

Customer's full name

customer_email
string<email>
required

Customer's email address

customer_phone_number
string
required

Customer's phone number

metadata
object

Additional information about the transaction

redirect_url
string<uri>

URL to redirect customer after payment completion

reference
string

Unique transaction reference (optional - auto-generated if not provided)

Response

200 - application/json

Transaction initialized successfully

status
boolean

Transaction initialization status

message
string

Response message

data
object