Bonaventure OgetoBy Bonaventure Ogeto|

Paystack Dedicated Account Not Assigned: Every Cause and Fix

Dedicated virtual account (DVA) creation fails when your Paystack business is not activated for DVA, your KYC documents are incomplete, you are using a starter business, or the bank provider is not available for your country. Check your business activation status in Dashboard > Settings > Preferences, verify your KYC is fully approved, and confirm your business type supports DVA before making the API call.

What the Error Looks Like

When you call the Paystack Create Dedicated Virtual Account endpoint and it fails, the response varies depending on the root cause. Here are the common shapes:

// Missing DVA activation
{
  "status": false,
  "message": "Dedicated NUBAN is not available for this business"
}

// Incomplete customer data
{
  "status": false,
  "message": "Customer first name, last name, and phone are required"
}

// Provider not available
{
  "status": false,
  "message": "The selected provider is not available"
}

// Business not verified
{
  "status": false,
  "message": "Your business has not been fully activated"
}

Each of these points to a different prerequisite you have not satisfied. Let us go through every one.

The Full Prerequisites Checklist

Dedicated virtual accounts on Paystack have more prerequisites than standard payment acceptance. Here is every requirement, in order:

1. Business Registration Type

Your Paystack account must be a registered business, not a starter business. Starter accounts are limited to basic payment acceptance. DVA requires a registered LLC, enterprise, sole proprietorship with CAC registration (Nigeria), or the equivalent registered entity in your country. You can check your account type in Dashboard > Settings > Business Settings.

2. Full KYC Verification

Every required KYC document must be submitted and approved. Partial submission is not enough. Common required documents include:

  • Certificate of incorporation or business registration certificate
  • Valid government-issued ID for at least one director
  • Proof of business address (utility bill, bank statement)
  • Board resolution or letter authorizing payment collection (for LLCs)

Check approval status in Dashboard > Settings > Compliance. Each document should show a green "Approved" badge. "Pending" or "Rejected" blocks DVA creation.

3. DVA Feature Activation

Even with full KYC, DVA is a separate feature that Paystack must enable on your account. Go to Dashboard > Settings > Preferences and look for the "Dedicated Accounts" section. If it is not there or shows as disabled, contact Paystack support to request activation.

4. Bank Provider Availability

DVA relies on partner banks (like Wema Bank and Titan Trust Bank in Nigeria). The available providers depend on your business country. Requesting a provider that does not serve your region produces an error.

5. Customer Object Requirements

The customer you are assigning the DVA to must have a complete profile: email, first_name, last_name, and phone. A customer created with only an email will fail DVA assignment.

Cause 1: Business Not Activated for DVA

This is the most common cause. Your Paystack account can accept payments just fine, but DVA is a separate capability that requires explicit activation.

How to Verify

Log into your Paystack Dashboard. Navigate to Settings > Preferences. Look for the Dedicated Accounts section. If you do not see it, DVA is not enabled for your business.

How to Fix

Contact Paystack support through Dashboard > Support or email support@paystack.com. Request DVA activation. Include your business ID and explain your use case (marketplace deposits, wallet funding, recurring collections, etc.). Paystack reviews these requests and typically responds within 1 to 3 business days.

While waiting, you can still build and test your DVA integration using Paystack test mode. Test mode DVA creation works without full activation, so you can verify your code is correct before going live.

Cause 2: KYC Documents Missing or Rejected

If any required compliance document is still pending review or was rejected, DVA creation will fail. The error message does not always specify which document is the problem.

How to Diagnose

Go to Dashboard > Settings > Compliance. Review each required document:

  • Green / Approved means this document is accepted.
  • Yellow / Pending means Paystack has not reviewed it yet. Wait for review or contact support to expedite.
  • Red / Rejected means the document was not accepted. Read the rejection reason and resubmit a corrected version.

Common Rejection Reasons

Blurry or low-resolution document scans. Expired government ID. Business name on documents does not match the name on your Paystack account. Address proof older than 3 months. Missing signatures on authorization letters.

How to Fix

Resubmit the rejected documents with corrections. Make sure scans are clear, IDs are current, and business names match exactly. After resubmission, allow 1 to 3 business days for review. Do not attempt DVA creation until all documents show "Approved."

Cause 3: Starter or Unregistered Business Account

Paystack starter accounts (personal or unregistered business accounts) cannot create DVAs. This is a regulatory requirement, not just a Paystack policy. Banks that issue virtual account numbers require registered business entities as account holders.

How to Verify

Dashboard > Settings > Business Settings shows your account type. If it says "Starter" or "Individual," you need to upgrade.

How to Fix

Upgrade your Paystack account to a registered business. This requires:

  1. A legally registered business entity (LLC, enterprise, sole proprietorship with CAC, etc.)
  2. Submitting registration documents through Dashboard > Settings > Business Settings > Upgrade
  3. Completing the full KYC process described above

The upgrade process typically takes 3 to 7 business days including document review. Once approved, your account type changes and you can request DVA activation.

Cause 4: Customer Missing Required Fields

DVA assignment requires a fully populated customer record. Unlike standard transactions where an email is enough, DVA needs the customer's full name and phone number for the bank's KYC process.

The Error

{
  "status": false,
  "message": "Customer first name, last name, and phone are required"
}

How to Fix

Update the customer object before attempting DVA creation:

// Step 1: Create or update customer with full details
const customerResponse = await fetch('https://api.paystack.co/customer', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer sk_live_your_secret_key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: 'customer@example.com',
    first_name: 'Amina',
    last_name: 'Okafor',
    phone: '+2348012345678',
  }),
});

const customer = await customerResponse.json();

// Step 2: Now create the dedicated account
const dvaResponse = await fetch('https://api.paystack.co/dedicated_account', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer sk_live_your_secret_key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    customer: customer.data.id, // or customer.data.customer_code
    preferred_bank: 'wema-bank',
  }),
});

const dva = await dvaResponse.json();
console.log(dva);
// { status: true, data: { bank: { name: "Wema Bank" }, account_number: "..." } }

If the customer already exists but has incomplete fields, use the Update Customer endpoint (PUT /customer/:code) to add the missing first_name, last_name, and phone before retrying.

Cause 5: Bank Provider Not Available for Your Country

Paystack DVA relies on partner banks to issue virtual account numbers. Not every bank partner operates in every Paystack-supported country.

How to Check Available Providers

Call the Fetch Bank Providers endpoint before attempting DVA creation:

const response = await fetch('https://api.paystack.co/dedicated_account/available_providers', {
  headers: {
    Authorization: 'Bearer sk_live_your_secret_key',
  },
});

const providers = await response.json();
console.log(providers.data);
// Returns list of available providers for your business country

If this returns an empty array, DVA is not yet available in your country. If it returns providers but you are requesting a different one, switch your preferred_bank parameter to one that is listed.

Current Provider Availability (as of mid-2026)

  • Nigeria: Wema Bank, Titan Trust Bank (most common)
  • Ghana, South Africa, Kenya: Provider availability varies. Check the endpoint above for current options.

Step-by-Step Debug Workflow

When DVA creation fails, run through this sequence:

  1. Check the response body. The message field tells you which prerequisite failed. Read it carefully before searching for solutions.
  2. Verify your environment. Are you using live keys on the live endpoint? Test keys work for DVA in test mode, but live DVA requires live keys and full business activation.
  3. Check account type. Dashboard > Settings > Business Settings. Must be a registered business, not a starter account.
  4. Check KYC status. Dashboard > Settings > Compliance. Every document must be "Approved."
  5. Check DVA activation. Dashboard > Settings > Preferences. Look for Dedicated Accounts. If missing, contact support.
  6. Check customer data. Fetch the customer by code or ID and verify first_name, last_name, phone, and email are all populated.
  7. Check provider availability. Call /dedicated_account/available_providers and confirm the provider you are requesting is listed.
  8. Retry. After fixing the issue, make the DVA creation call again.

If you have checked everything above and it still fails, open a support ticket with Paystack. Include: your business ID, the customer code you are trying to assign a DVA to, the full API response you received, and the timestamp of the request. This helps support locate your request in their logs quickly.

Verifying the Fix

After resolving the prerequisite issue, confirm DVA creation works end to end:

// 1. Verify customer has all required fields
const customer = await fetch('https://api.paystack.co/customer/CUS_xxxxx', {
  headers: { Authorization: 'Bearer sk_live_your_secret_key' },
}).then(r => r.json());

console.log('Customer:', {
  email: customer.data.email,
  first_name: customer.data.first_name,
  last_name: customer.data.last_name,
  phone: customer.data.phone,
});
// All four should be populated

// 2. Verify providers are available
const providers = await fetch(
  'https://api.paystack.co/dedicated_account/available_providers',
  { headers: { Authorization: 'Bearer sk_live_your_secret_key' } }
).then(r => r.json());

console.log('Available providers:', providers.data.map(p => p.provider_slug));

// 3. Create the dedicated account
const dva = await fetch('https://api.paystack.co/dedicated_account', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer sk_live_your_secret_key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    customer: customer.data.customer_code,
    preferred_bank: providers.data[0].provider_slug,
  }),
}).then(r => r.json());

if (dva.status) {
  console.log('DVA created:', dva.data.account_number, dva.data.bank.name);
} else {
  console.error('DVA still failing:', dva.message);
}

A successful response returns status: true with the assigned bank name and virtual account number. The customer can now receive bank transfers to this account number, and Paystack will credit the funds to your balance and fire a dedicatedaccount.assign.success webhook event.

Key Takeaways

  • DVA creation requires your Paystack business to be explicitly activated for dedicated accounts. This is a separate activation from general payment processing.
  • Starter businesses on Paystack cannot create dedicated virtual accounts. You need a registered business (LLC, enterprise, or equivalent).
  • Incomplete KYC verification is the most common blocker. All required documents must show "Approved" status in your dashboard before DVA works.
  • The bank provider you request (Wema, Titan, etc.) must be available for your business country. Not all providers work in all Paystack-supported countries.
  • Always create a Paystack customer object first before assigning a DVA. The customer must have a valid email, first_name, last_name, and phone number.
  • You can check DVA eligibility programmatically by calling the Fetch Bank Providers endpoint before attempting to create accounts.

Frequently Asked Questions

Can I create dedicated virtual accounts in Paystack test mode?
Yes. Test mode supports DVA creation without full business activation. Use your test secret key (sk_test_xxx) against the same API endpoints. The returned account numbers are fake and cannot receive real deposits, but this lets you verify your integration code is correct before going live.
How many dedicated virtual accounts can I create per customer?
Each customer can have one dedicated virtual account per provider. If Wema Bank and Titan Trust Bank are both available, a single customer can have two DVAs (one from each bank). You cannot create two DVAs from the same provider for the same customer.
Do I need a separate Paystack plan or pricing tier for DVA?
No separate plan is needed. DVA is a feature on your existing Paystack account. However, Paystack may charge a small flat fee per DVA created or per deposit received. Check your Paystack pricing page or contact your account manager for current DVA-specific fees.
Can a starter Paystack account use DVA if I only need it for testing?
Test mode DVA works on any account type, including starter accounts. But live mode DVA strictly requires a registered business account with full KYC approval. If you are building a product that needs DVA in production, plan for the business registration and KYC process early.
What happens if I create a customer without a phone number and then try to assign a DVA?
The DVA creation call fails with a message indicating the customer is missing required fields. You need to update the customer record with a valid phone number using PUT /customer/:code before retrying the DVA assignment.

Ready to build real-world apps?

Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.

Apply to the McTaba Marathon