Skip to main content

Overview

Card payment initialization is the first step in processing a card payment. This endpoint creates a payment session that can be used to securely process credit and debit card transactions.

Endpoint

Request Parameters

integer
required
Payment amount in minor units (e.g., cents, kobo)
  • Minimum: 100
  • Must be positive integer
  • Example: 10000 = $100.00 USD
string
required
ISO currency code
  • Supported: NGN, USD, CAD, USDT, USDC
  • Must match payment method
  • Example: “USD”
object
required
Customer information object
string
required
Payment description
  • Maximum length: 200 characters
  • Will appear on statements
string
required
Unique transaction reference
  • Must be unique per transaction
  • Maximum length: 50 characters
object
required
Payment method details
string
required
  • Must be of type: ""
object
required
Order information object
object
Optional additional data
  • Nested objects allowed

Example Requests

Test Cards

Use these test cards in your sandbox environment to simulate different payment scenarios:
VISA Test Card (NGN)
  • Card Number: 4012000033330026
  • Expiry Date: 01/39
  • CVV: 100
Mastercard Test Card (USD)
  • Card Number: 5123450000000008
  • Expiry Date: 12/25
  • CVV: 100
VISA 3DS Test Card
  • Card Number: 4761530000000008
  • Expiry Date: 05/25
  • CVV: 100
  • Test OTP: 123456
Mastercard 3DS Test Card
  • Card Number: 5200000000001005
  • Expiry Date: 12/25
  • CVV: 100
  • Test OTP: 123456
Insufficient Funds
  • Card Number: 4000000000000010
  • Expiry Date: 01/25
  • CVV: 100
Declined Card
  • Card Number: 4000000000000002
  • Expiry Date: 01/25
  • CVV: 100

Response Examples

Authentication Flows

Some card payments may require additional authentication steps. The response will indicate the required authentication type:
1

3D Secure Authentication

If 3DS is required, you’ll receive:
Redirect the customer to complete 3DS verification, then:
  1. Listen for webhook notification, or
  2. Poll payment status endpoint
2

OTP Validation

For OTP authentication:
Submit OTP via:
3

PIN Verification

For PIN authentication:
Submit PIN via:

Security Requirements

  • All card data must be encrypted before transmission
  • Use our encryption guide for implementation
  • Never log or store raw card details
  • Use our secure payment fields when collecting card data
  • Follow PCI DSS requirements if handling card data
  • Implement proper data sanitization
  • Use HTTPS for all API calls
  • Include proper authorization headers
  • Rotate API keys regularly

Error Handling

error
Card declined by issuing bank
  • Status code: 402
  • Possible reasons:
    • Insufficient funds
    • Suspicious activity
    • Expired card
error
Invalid card details provided
  • Status code: 400
  • Check:
    • Card number
    • Expiry date
    • CVV
error
Failed authentication (3DS/OTP/PIN)
  • Status code: 401
  • Verify credentials and retry
Common error scenarios to handle:
  • Invalid currency code
  • Amount below minimum
  • Missing customer information
  • Invalid phone/email format
  • Incorrect billing address
  • Network timeouts

Next Steps

After successful initialization:
  1. Handle any required authentication
  2. Capture the payment
  3. Listen for webhook notifications

Need Help?