Skip to main content

Create Transfer Recipient

Create a transfer recipient to enable money transfers to bank accounts, mobile money wallets, or other supported channels. Recipients must be created before initiating transfers.
All transfer recipients are verified against the recipient’s bank or mobile money provider to ensure valid account details before creation.

Endpoint

POST /transfer/recipient

Headers

NameTypeRequiredDescription
AuthorizationstringRequiredBearer token with your secret API key
Content-TypestringRequiredMust be application/json
Idempotency-KeystringOptionalUnique key to prevent duplicate recipients

Request Body

type
string
required
Type of recipient accountAvailable types:
  • nuban - Nigerian bank account (NUBAN)
  • mobile_money - Mobile money account
  • ghana_mobile_money - Ghana mobile money
  • kenya_mobile_money - Kenya mobile money
  • bvn - Bank Verification Number (Nigeria)
name
string
required
Full name of the recipient as registered with their bank or mobile money provider
Name must match the account holder’s registered name exactly
account_number
string
required
Account number, phone number, or identifier based on recipient typeFormat by type:
  • nuban: 10-digit Nigerian bank account number
  • mobile_money: Phone number in international format (e.g., +2348012345678)
  • bvn: 11-digit Bank Verification Number
bank_code
string
Bank or provider code (required for nuban and some mobile money types)
Use the List Banks endpoint to get valid bank codes
currency
string
default:"NGN"
Currency for transfers to this recipientSupported currencies: NGN, GHS, KES, USD, GBP, EUR
email
string
Recipient’s email address for transfer notifications (optional but recommended)
phone
string
Recipient’s phone number for SMS notifications (required for mobile money)
metadata
object
Additional information about the recipient in key-value pairs
{
  "notes": "Monthly salary recipient",
  "employee_id": "EMP001",
  "department": "Engineering"
}

Example Request

curl -X POST https://api.payvessel.com/transfer/recipient \
  -H "Authorization: Bearer sk_test_abc123..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: recipient_2024_001" \
  -d '{
    "type": "nuban",
    "name": "John Doe",
    "account_number": "0123456789",
    "bank_code": "058",
    "currency": "NGN",
    "email": "[email protected]",
    "metadata": {
      "notes": "Salary recipient",
      "employee_id": "EMP001"
    }
  }'

Response

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

Example Response

{
  "status": "success",
  "message": "Transfer recipient created successfully",
  "data": {
    "id": 98765,
    "recipient_code": "RCP_xyz789abc123",
    "type": "nuban",
    "name": "John Doe",
    "account_number": "0123456789",
    "bank_code": "058",
    "bank_name": "Guaranty Trust Bank",
    "currency": "NGN",
    "email": "[email protected]",
    "phone": null,
    "active": true,
    "verified": true,
    "verification_status": "verified",
    "metadata": {
      "notes": "Salary recipient",
      "employee_id": "EMP001"
    },
    "created_at": "2024-01-15T14:30:00Z",
    "updated_at": "2024-01-15T14:30:00Z"
  }
}

Recipient Types Guide

Requirements:
  • type: "nuban"
  • name: Exact account holder name
  • account_number: 10-digit account number
  • bank_code: Valid Nigerian bank code
Verification Process:
  • Account number validation with bank
  • Name verification against bank records
  • Real-time verification (usually instant)
{
  "type": "nuban",
  "name": "John Doe",
  "account_number": "0123456789",
  "bank_code": "058",
  "currency": "NGN"
}

Bank Codes Reference

Common Nigerian bank codes for reference:
Bank NameCode
Access Bank044
Guaranty Trust Bank058
United Bank for Africa033
Zenith Bank057
First Bank011
Fidelity Bank070
Union Bank032
Sterling Bank232
Stanbic IBTC221
FCMB214
Bank NameCode
Kuda Bank50211
VFD Microfinance Bank566
Rubies Bank125
Carbon565
ALAT by Wema035
Use the List Banks endpoint to get the complete, up-to-date list of supported banks and their codes.
curl -X GET https://api.payvessel.com/transfer/banks \
  -H "Authorization: Bearer sk_test_abc123..."

Verification Process

PayVessel performs real-time account verification during recipient creation:
1

Account Number Validation

Validates account number format and checks if it exists with the specified bank
2

Name Verification

Compares provided name against the account holder’s registered name
3

Account Status Check

Verifies the account is active and can receive transfers
4

Compliance Screening

Performs basic compliance checks against restricted account lists
Verification Failures: If verification fails, the recipient will not be created. Common failures include:
  • Invalid account number
  • Name mismatch
  • Inactive account
  • Invalid bank code

Integration Patterns

// Create multiple recipients for payroll
const createPayrollRecipients = async (employees) => {
  const recipients = [];
  
  for (const employee of employees) {
    try {
      const recipient = await payvessel.transfer.recipient.create({
        type: 'nuban',
        name: employee.full_name,
        account_number: employee.account_number,
        bank_code: employee.bank_code,
        currency: 'NGN',
        email: employee.email,
        metadata: {
          employee_id: employee.id,
          department: employee.department,
          salary_grade: employee.grade
        }
      });
      
      recipients.push(recipient.data);
    } catch (error) {
      console.error(`Failed to create recipient for ${employee.full_name}:`, error);
    }
  }
  
  return recipients;
};

Best Practices

Verify Before Transfer

Always create and verify recipients before initiating transfers to avoid failed transactions

Store Recipient Codes

Save the recipient_code for future transfers to avoid recreating recipients

Handle Verification Failures

Implement proper error handling for account verification failures

Use Metadata

Add relevant metadata to recipients for easier management and reporting

Next Steps

After creating a recipient:

Webhook Events

This endpoint triggers the following webhook events:
  • recipient.created - Recipient successfully created and verified
  • recipient.verification_failed - Recipient verification failed during creation
Pro Tip: Create recipients during off-peak hours when possible, as bank verification APIs may have slower response times during peak business hours.