Skip to content

docs / payins

Payins

A payin represents an inbound payment from a customer to your merchant wallet. Payve supports three payment methods:

MethodHow it works
bank_transferA virtual account is provisioned; customer sends a bank transfer to that account
cardCustomer enters debit/credit card details; PIN and OTP are collected inline
mobile_moneyCustomer dials a USSD code or enters a PIN to authorise via their mobile wallet

The payin object

json
{
  "id": "3e4c8f20-...",
  "publicId": "pin_01j9abc123",
  "status": "succeeded",
  "currency": "NGN",
  "amount": "100000",
  "method": "bank_transfer",
  "merchantReference": "ORDER-9987",
  "authorization": {
    "mode": "virtual_account",
    "accountNumber": "0123456789",
    "bankName": "Payve Test Bank",
    "accountName": "Payve Merchant Virtual",
    "expiresAt": "2025-01-16T10: 00: 00Z"
  },
  "requiresAuthorization": false,
  "createdAt": "2025-01-15T10: 00: 00Z",
  "updatedAt": "2025-01-15T10: 02: 30Z"
}

Fields

FieldTypeDescription
idstringInternal UUID
publicIdstringPublic-facing ID with pin_ prefix
statusstringSee statuses
currencystringISO 4217 currency code
amountstringAmount in minor units
methodstringbank_transfer, card, or mobile_money
merchantReferencestringYour own reference for this payment
authorizationobjectMethod-specific auth instructions (see below)
requiresAuthorizationbooleanWhether the customer must take an action
createdAtstringISO 8601 timestamp

Statuses

StatusDescription
receivedPayin created, waiting for customer action
pendingPayment submitted, awaiting channel confirmation
succeededPayment confirmed and wallet credited
failedPayment failed at the channel
expiredNo payment received within the expiry window

Initiate a payin

POST/v1/payins