> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usezentra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Frequently Asked Questions

> Common questions about Zentra

Find answers to common questions about the Zentra platform.

## Getting Started

<AccordionGroup>
  <Accordion title="How do I get started with Zentra?">
    1. [Create a developer account](https://api.usezentra.com/developer/signup)
    2. Generate your sandbox API keys
    3. Follow our [Quickstart Guide](/quickstart)
    4. Build and test in sandbox
    5. Go live when ready
  </Accordion>

  <Accordion title="Is there a free tier?">
    Yes! Sandbox access is completely free with no time limits. You only pay when processing live transactions.
  </Accordion>

  <Accordion title="What programming languages are supported?">
    We provide official SDKs for:

    * JavaScript/TypeScript (Node.js, React, Next.js)
    * Python
    * PHP

    You can also use our REST API with any language that supports HTTP.
  </Accordion>

  <Accordion title="How long does integration take?">
    Most developers complete basic integration in 1-2 days. A complete neobank app typically takes 1-2 weeks depending on features.
  </Accordion>
</AccordionGroup>

## API & Authentication

<AccordionGroup>
  <Accordion title="How do I authenticate API requests?">
    Include your API key in the `Authorization` header:

    ```
    Authorization: Bearer YOUR_SECRET_KEY
    ```

    See [Authentication Guide](/authentication) for details.
  </Accordion>

  <Accordion title="What's the difference between sandbox and live keys?">
    * **Sandbox keys** (`sk_sandbox_*`): For testing, no real money
    * **Live keys** (`sk_live_*`): For production, real transactions

    Never mix sandbox and live keys in your code.
  </Accordion>

  <Accordion title="My API key isn't working. What should I do?">
    1. Verify you're using the correct key for the environment
    2. Check the key hasn't been revoked in the Developer Console
    3. Ensure you're including `Bearer` prefix in Authorization header
    4. Use [Contact Support](/support/contact) if the issue persists
  </Accordion>

  <Accordion title="What are the API rate limits?">
    * **Sandbox**: 100 requests/minute
    * **Starter**: 1,000 requests/minute
    * **Growth**: 5,000 requests/minute
    * **Enterprise**: Custom

    See [Rate Limits](/api-reference/rate-limits) for details.
  </Accordion>
</AccordionGroup>

## Virtual Accounts

<AccordionGroup>
  <Accordion title="How do virtual accounts work?">
    Virtual accounts are unique bank account numbers assigned to your customers. When someone sends money to a virtual account, it's automatically credited to your wallet, and you receive a webhook notification.
  </Accordion>

  <Accordion title="Which banks support virtual accounts?">
    Currently supported:

    * GTBank (058)
    * Wema Bank (035)
    * Providus Bank (101)
    * Sterling Bank (232)

    More banks are being added regularly.
  </Accordion>

  <Accordion title="Can I create multiple virtual accounts per customer?">
    Yes, up to 5 virtual accounts per customer.
  </Accordion>

  <Accordion title="How long does it take to create a virtual account?">
    Virtual account creation is instant, typically taking 1-5 seconds.
  </Accordion>

  <Accordion title="Are there fees for virtual accounts?">
    * Account creation: Free
    * Monthly maintenance: Free
    * Incoming transfers: ₦10 per transaction
  </Accordion>
</AccordionGroup>

## Transfers

<AccordionGroup>
  <Accordion title="How long do transfers take?">
    Most transfers complete within seconds. Some banks may take up to 24 hours.
  </Accordion>

  <Accordion title="What are the transfer fees?">
    * ₦0 - ₦5,000: ₦10
    * ₦5,001 - ₦50,000: ₦25
    * Above ₦50,000: ₦50
  </Accordion>

  <Accordion title="What are the transfer limits?">
    * Single transaction: ₦5,000,000
    * Daily limit: ₦10,000,000
    * Custom limits available for enterprise
  </Accordion>

  <Accordion title="Can I transfer to all Nigerian banks?">
    Yes, we support transfers to all Nigerian banks.
  </Accordion>

  <Accordion title="What happens if a transfer fails?">
    Failed transfers are automatically refunded to your wallet. You'll receive a webhook notification with the failure reason.
  </Accordion>
</AccordionGroup>

## Payments

<AccordionGroup>
  <Accordion title="What payment methods do you support?">
    * Cards (Visa, Mastercard, Verve)
    * Bank transfers
    * USSD
    * Bank account debits
  </Accordion>

  <Accordion title="What are the payment fees?">
    * Local cards: 1.5% capped at ₦2,000
    * International cards: 3.9%
    * Bank transfers: Free
    * USSD: ₦100 flat
  </Accordion>

  <Accordion title="How do I verify a payment?">
    Use the payment reference to call the verify endpoint:

    ```javascript theme={null}
    const payment = await client.payments.verify('PAY_123');
    ```
  </Accordion>
</AccordionGroup>

## Webhooks

<AccordionGroup>
  <Accordion title="What are webhooks used for?">
    Webhooks notify your server of events in real-time, such as:

    * Virtual account credits
    * Transfer completions
    * Payment successes
    * Card transactions
  </Accordion>

  <Accordion title="How do I set up webhooks?">
    1. Go to Developer Console → Webhooks
    2. Add your webhook URL
    3. Select events to receive
    4. Save and copy the webhook secret
    5. Verify webhook signatures in your code

    See [Webhooks Guide](/guides/handling-webhooks) for details.
  </Accordion>

  <Accordion title="How do I verify webhook signatures?">
    ```javascript theme={null}
    const isValid = client.webhooks.verify(
      payload,
      signature,
      secret
    );
    ```

    See [Verify Signatures](/api-reference/webhooks/verify-signature).
  </Accordion>

  <Accordion title="What if my webhook endpoint is down?">
    We'll retry failed webhooks with exponential backoff for up to 3 days. You can also replay webhooks from the developer tooling available to your tenant.
  </Accordion>
</AccordionGroup>

## KYC & Compliance

<AccordionGroup>
  <Accordion title="What KYC checks do you support?">
    * BVN verification
    * NIN verification
    * Selfie verification
    * Address verification
  </Accordion>

  <Accordion title="Is BVN verification required?">
    BVN verification is required for:

    * Creating virtual accounts
    * High-value transactions
    * Card issuing

    It's recommended for all customers to ensure compliance.
  </Accordion>

  <Accordion title="How long does KYC verification take?">
    * BVN: Instant
    * NIN: 1-5 minutes
    * Selfie: 1-10 minutes
  </Accordion>
</AccordionGroup>

## Billing & Pricing

<AccordionGroup>
  <Accordion title="How does pricing work?">
    Zentra uses transaction-based pricing. You only pay for:

    * Transfer fees (₦10-50)
    * Payment processing (1.5-3.9%)
    * Virtual account credits (₦10)
    * Card issuing (₦500/card)

    No monthly fees or setup costs.
  </Accordion>

  <Accordion title="When do I get paid?">
    Settlements are processed:

    * **T+1**: Next day settlement (default)
    * **Instant**: Available for enterprise

    Funds are settled to your registered bank account.
  </Accordion>

  <Accordion title="Are there volume discounts?">
    Yes. Use [Contact Support](/support/contact) for custom pricing based on rollout scope and volume.
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="I'm getting a 401 Unauthorized error">
    This usually means:

    1. Invalid API key
    2. Missing `Authorization` header
    3. Using sandbox key on live endpoint

    Double-check your API key and environment.
  </Accordion>

  <Accordion title="Transfers are failing">
    Common causes:

    * Insufficient wallet balance
    * Invalid recipient account
    * Daily limit exceeded
    * Network issues

    Check the error message for specific details.
  </Accordion>

  <Accordion title="Webhooks aren't being received">
    1. Verify webhook URL is publicly accessible
    2. Check firewall/security settings
    3. Ensure endpoint returns 200 status
    4. Check webhook logs in Dashboard
    5. Test with ngrok for local development
  </Accordion>

  <Accordion title="How do I report a bug?">
    1. Check [API Status](https://status.usezentra.com)
    2. Search existing issues
    3. Use [Contact Support](/support/contact) and include:
       * Request ID
       * Endpoint used
       * Error message
       * Steps to reproduce
  </Accordion>
</AccordionGroup>

## Going Live

<AccordionGroup>
  <Accordion title="What do I need to go live?">
    1. Complete business verification
    2. Submit required documents
    3. Pass compliance review
    4. Test thoroughly in sandbox
    5. Switch to live API keys

    See [Going Live Guide](/guides/going-live) for checklist.
  </Accordion>

  <Accordion title="How long does compliance review take?">
    Typically 2-5 business days after submitting all required documents.
  </Accordion>

  <Accordion title="What documents are required?">
    * Certificate of Incorporation
    * Directors' IDs
    * Business address proof
    * Bank statement
    * Shareholders' details

    Requirements may vary by business type.
  </Accordion>
</AccordionGroup>

## Still Have Questions?

<CardGroup cols={2}>
  <Card title="Contact Support" icon="envelope" href="/support/contact">
    Get help from our team
  </Card>

  <Card title="Developer Console" icon="terminal" href="https://api.usezentra.com/developer/signin">
    Manage keys, webhooks, and account settings
  </Card>

  <Card title="API Reference" icon="book" href="/api-reference/overview">
    Explore full documentation
  </Card>

  <Card title="API Status" icon="signal" href="https://status.usezentra.com">
    Check system status
  </Card>
</CardGroup>
