Skip to main content
This endpoint allows customers to pay for transactions, bill payments, wallet funding, or any other payable item using their wallet balance. The system automatically debits the customer’s wallet and updates the payment status.

Authentication

X-Auth-Token
string
required
Authentication token obtained from login
uuid
string
required
Device UUID for request tracking
platform
string
required
Platform identifier (e.g., “WEB”, “MOBILE”, “IOS”, “ANDROID”)

Request Body

payableType
enum
required
Type of payable item to processOptions:
  • TRANSACTION - Remittance/money transfer
  • WALLET - Generic wallet payment
  • WALLET_CUSTOMER - Personal wallet payment
  • BILL - Bill payment
  • MERCHANT - Product payment
  • WITHDRAWAL - Wallet withdrawal
payAbleId
string
required
Unique identifier of the payable item
password
string
required
Customer’s account password for authentication
accountId
string
required
Wallet account ID to debit from
totalCheckOutAmount
number
required
Total amount to be debited including fees and taxes
paymentGatewayRef
string
required
Reference number for the payment (can be auto-generated)
accountNumber
string
Specific wallet account number (if customer has multiple accounts)
paymentAccountNumbeCurrencyCode
enum
Currency code of the wallet accountExamples: USD, GBP, NGN, EUR
otp
string
One-Time Password for Strong Customer Authentication (if enabled)
pin
string
Transaction PIN for additional security (if enabled)

Code Examples

curl --request POST \
  --url https://remitjunction.fincode.software/api/v6/services/paymentmanagement/makepaymentfromwalletaccount \
  --header 'Content-Type: application/json' \
  --header 'X-Auth-Token: your_auth_token' \
  --header 'uuid: device_uuid' \
  --header 'platform: WEB' \
  --data '{
    "payableType": "TRANSACTION",
    "payAbleId": "txn_abc123",
    "password": "user_password",
    "accountId": "wallet_456",
    "totalCheckOutAmount": 105.50,
    "paymentGatewayRef": "ref_789",
    "accountNumber": "1234567890",
    "paymentAccountNumbeCurrencyCode": "USD",
    "pin": "1234"
  }'

Use Cases

1. Pay for Money Transfer

const payForRemittance = async (transactionId) => {
  // First, get payment methods to confirm wallet balance
  const methods = await getPaymentMethods(transactionPCN);
  const walletMethod = methods.data.paymentMethodsMetadata
    .find(m => m.paymentMethod === 'E_WALLET');
  
  if (!walletMethod.metadata.sufficient) {
    throw new Error('Insufficient wallet balance');
  }
  
  // Process payment from wallet
  const payment = await fetch('/makepaymentfromwalletaccount', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
      payableType: 'TRANSACTION',
      payAbleId: transactionId,
      password: userPassword,
      accountId: walletAccountId,
      totalCheckOutAmount: walletMethod.totalAmount,
      paymentGatewayRef: generateRef(),
      paymentAccountNumbeCurrencyCode: 'USD'
    })
  });
  
  return await payment.json();
};

2. Pay Bill from Wallet

const payBill = async (billId, amount) => {
  const response = await fetch('/makepaymentfromwalletaccount', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
      payableType: 'BILL',
      payAbleId: billId,
      password: userPassword,
      accountId: walletAccountId,
      totalCheckOutAmount: amount,
      paymentGatewayRef: `BILL_${Date.now()}`,
      paymentAccountNumbeCurrencyCode: 'NGN',
      pin: transactionPIN
    })
  });
  
  const result = await response.json();
  
  if (result.status === 'SUCCESS') {
    console.log('Bill paid successfully');
  }
  
  return result;
};

3. Fund Another Wallet

const fundWallet = async (fundingRequestId) => {
  const response = await fetch('/makepaymentfromwalletaccount', {
    method: 'POST',
    headers: headers,
    body: JSON.stringify({
      payableType: 'WALLET_CUSTOMER',
      payAbleId: fundingRequestId,
      password: userPassword,
      accountId: sourceWalletId,
      totalCheckOutAmount: fundingAmount,
      paymentGatewayRef: `FUND_${Date.now()}`,
      accountNumber: sourceAccountNumber,
      paymentAccountNumbeCurrencyCode: 'USD'
    })
  });
  
  return await response.json();
};