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

# What do you want to do?

> Find the task you need across the Pila dashboard and API — start typing, or browse by area.

export const CATEGORIES = [{
  id: "all",
  label: "All"
}, {
  id: "get-set-up",
  label: "Get set up"
}, {
  id: "collect",
  label: "Collect money"
}, {
  id: "payout",
  label: "Pay money out"
}, {
  id: "cards",
  label: "Virtual USD cards"
}, {
  id: "webhooks",
  label: "Webhooks & events"
}, {
  id: "services",
  label: "Airtime, data & lookups"
}, {
  id: "dashboard",
  label: "Run the dashboard"
}, {
  id: "account",
  label: "Account & security"
}, {
  id: "help",
  label: "Get help"
}];

export const TASKS = [{
  cat: "get-set-up",
  title: "Sign in to the Pila dashboard",
  dest: "Sign in",
  href: "/dashboard-guide/getting-started/sign-in"
}, {
  cat: "get-set-up",
  title: "Create an app and get an AppId",
  dest: "Create an app",
  href: "/dashboard-guide/getting-started/create-an-app"
}, {
  cat: "get-set-up",
  title: "Find my API keys",
  dest: "Authentication",
  href: "/api-reference/get-started/authentication"
}, {
  cat: "get-set-up",
  title: "Authenticate my first request",
  dest: "Authentication",
  href: "/api-reference/get-started/authentication"
}, {
  cat: "get-set-up",
  title: "Make my first API call",
  dest: "Quickstart",
  href: "/api-reference/get-started/quickstart"
}, {
  cat: "get-set-up",
  title: "Switch between sandbox and live",
  dest: "Environments",
  href: "/api-reference/get-started/environments"
}, {
  cat: "get-set-up",
  title: "Get my account verified for live access",
  dest: "Create an app",
  href: "/dashboard-guide/getting-started/create-an-app#getting-verified"
}, {
  cat: "get-set-up",
  title: "Fund my Pila wallet",
  dest: "Fund your wallet",
  href: "/dashboard-guide/getting-started/fund-your-wallet"
}, {
  cat: "get-set-up",
  title: "Understand the response envelope",
  dest: "Response format",
  href: "/api-reference/core-concepts/response-format"
}, {
  cat: "collect",
  title: "Give a customer a dedicated NUBAN",
  dest: "Create a wallet",
  href: "/api-reference/wallets/create-wallet#individual-wallet"
}, {
  cat: "collect",
  title: "Create a wallet for a registered company",
  dest: "Create a wallet",
  href: "/api-reference/wallets/create-wallet#corporate-wallet"
}, {
  cat: "collect",
  title: "Create a one-time account for a single checkout",
  dest: "Create a wallet",
  href: "/api-reference/wallets/create-wallet#one-time-use-account"
}, {
  cat: "collect",
  title: "Check a customer wallet's balance",
  dest: "Wallet details",
  href: "/api-reference/wallets/wallet-details"
}, {
  cat: "collect",
  title: "Check my own Pila balance",
  dest: "Get balance",
  href: "/api-reference/wallets/get-balance"
}, {
  cat: "collect",
  title: "Credit a wallet manually",
  dest: "Credit wallet",
  href: "/api-reference/wallets/credit-wallet"
}, {
  cat: "collect",
  title: "Debit a wallet manually",
  dest: "Debit wallet",
  href: "/api-reference/wallets/debit-wallet"
}, {
  cat: "collect",
  title: "Look up a single transaction",
  dest: "Transaction details",
  href: "/api-reference/wallets/transaction-details"
}, {
  cat: "payout",
  title: "Send money to a Nigerian bank account",
  dest: "Transfer funds",
  href: "/api-reference/wallets/transfer-funds"
}, {
  cat: "payout",
  title: "Confirm an account name before paying",
  dest: "Resolve NUBAN",
  href: "/api-reference/general-services/resolve-nuban"
}, {
  cat: "payout",
  title: "Find a bank's code",
  dest: "Fetch banks",
  href: "/api-reference/general-services/fetch-banks"
}, {
  cat: "payout",
  title: "Pay from my pool account instead of a wallet",
  dest: "Transfer funds",
  href: "/api-reference/wallets/transfer-funds"
}, {
  cat: "payout",
  title: "Check whether a payout settled",
  dest: "Transaction details",
  href: "/api-reference/wallets/transaction-details"
}, {
  cat: "payout",
  title: "Review payouts in the dashboard",
  dest: "Payouts",
  href: "/dashboard-guide/home/payouts"
}, {
  cat: "cards",
  title: "Issue a virtual USD card",
  dest: "Create virtual card",
  href: "/api-reference/cards/create-virtual-card"
}, {
  cat: "cards",
  title: "Top up a card",
  dest: "Load card",
  href: "/api-reference/cards/load-card"
}, {
  cat: "cards",
  title: "See a card's full number and CVV",
  dest: "Fetch card info",
  href: "/api-reference/cards/fetch-card-info"
}, {
  cat: "cards",
  title: "Freeze a card temporarily",
  dest: "Block card",
  href: "/api-reference/cards/block-card"
}, {
  cat: "cards",
  title: "Unfreeze a card",
  dest: "Unblock card",
  href: "/api-reference/cards/unblock-card"
}, {
  cat: "cards",
  title: "Sweep funds off a card",
  dest: "Withdraw funds",
  href: "/api-reference/cards/withdraw-funds"
}, {
  cat: "cards",
  title: "Close a card permanently",
  dest: "Terminate card",
  href: "/api-reference/cards/terminate-card"
}, {
  cat: "cards",
  title: "List a card's transactions",
  dest: "Card transactions",
  href: "/api-reference/cards/fetch-all-transactions"
}, {
  cat: "webhooks",
  title: "Subscribe to webhook events",
  dest: "Subscribe",
  href: "/api-reference/webhooks/subscribe"
}, {
  cat: "webhooks",
  title: "Verify a webhook signature",
  dest: "Webhook signatures",
  href: "/api-reference/core-concepts/webhook-signatures"
}, {
  cat: "webhooks",
  title: "Allowlist Pila's webhook IP",
  dest: "Webhook signatures",
  href: "/api-reference/core-concepts/webhook-signatures#ip-allowlisting"
}, {
  cat: "webhooks",
  title: "See every card event payload",
  dest: "Card events",
  href: "/api-reference/webhooks/card-events"
}, {
  cat: "webhooks",
  title: "Handle a deposit notification",
  dest: "Subscribe",
  href: "/api-reference/webhooks/subscribe#wallet-events"
}, {
  cat: "services",
  title: "Sell airtime to a customer",
  dest: "Buy airtime",
  href: "/api-reference/general-services/buy-airtime"
}, {
  cat: "services",
  title: "Sell a data bundle",
  dest: "Buy data",
  href: "/api-reference/general-services/buy-data"
}, {
  cat: "services",
  title: "List the available data plans",
  dest: "Buy data",
  href: "/api-reference/general-services/buy-data#data-plans"
}, {
  cat: "services",
  title: "Identify a card's issuing bank from its BIN",
  dest: "Resolve card BIN",
  href: "/api-reference/cards/resolve-card-bin"
}, {
  cat: "services",
  title: "Populate a state dropdown",
  dest: "States",
  href: "/api-reference/general-services/states-lgas"
}, {
  cat: "dashboard",
  title: "See my balance, collections and payouts",
  dest: "Overview",
  href: "/dashboard-guide/home/overview"
}, {
  cat: "dashboard",
  title: "Look up a customer and their wallets",
  dest: "Customers",
  href: "/dashboard-guide/home/customers"
}, {
  cat: "dashboard",
  title: "Browse every wallet I've created",
  dest: "Wallets",
  href: "/dashboard-guide/home/wallets"
}, {
  cat: "dashboard",
  title: "Search and export transactions",
  dest: "Transactions",
  href: "/dashboard-guide/home/transactions"
}, {
  cat: "dashboard",
  title: "Download a receipt for a payout",
  dest: "Payouts",
  href: "/dashboard-guide/home/payouts#view-a-payout-and-download-a-receipt"
}, {
  cat: "dashboard",
  title: "Set or reset my payment PIN",
  dest: "Business settings",
  href: "/dashboard-guide/home/settings#change-your-payment-pin"
}, {
  cat: "dashboard",
  title: "Choose where Pila takes its fees from",
  dest: "Business settings",
  href: "/dashboard-guide/home/settings#charge-source"
}, {
  cat: "dashboard",
  title: "Choose where payouts settle",
  dest: "Business settings",
  href: "/dashboard-guide/home/settings#settlement-account"
}, {
  cat: "dashboard",
  title: "Turn on email alerts for credits",
  dest: "Business settings",
  href: "/dashboard-guide/home/settings#credit-alerts"
}, {
  cat: "dashboard",
  title: "Add or change a webhook URL",
  dest: "Webhooks",
  href: "/dashboard-guide/developers/webhooks"
}, {
  cat: "dashboard",
  title: "Send a test webhook",
  dest: "Webhooks",
  href: "/dashboard-guide/developers/webhooks#webhook-details-and-deliveries"
}, {
  cat: "dashboard",
  title: "Read my API logs",
  dest: "API logs",
  href: "/dashboard-guide/developers/api-logs"
}, {
  cat: "account",
  title: "Get verified for live access",
  dest: "Company verification",
  href: "/dashboard-guide/account/company-verification"
}, {
  cat: "account",
  title: "Turn on two-factor authentication",
  dest: "Profile and security",
  href: "/dashboard-guide/account/profile-security#two-factor-authentication"
}, {
  cat: "account",
  title: "Change my password",
  dest: "Profile and security",
  href: "/dashboard-guide/account/profile-security#security"
}, {
  cat: "account",
  title: "Choose who gets balance alerts",
  dest: "Email notifications",
  href: "/dashboard-guide/account/email-notifications"
}, {
  cat: "account",
  title: "See who changed a setting",
  dest: "Logs",
  href: "/dashboard-guide/logs#audit-logs"
}, {
  cat: "account",
  title: "Check who exported customer data",
  dest: "Logs",
  href: "/dashboard-guide/logs#export-logs"
}, {
  cat: "help",
  title: "Contact support",
  dest: "Support",
  href: "/support"
}, {
  cat: "help",
  title: "Read the dashboard FAQ",
  dest: "FAQ",
  href: "/dashboard-guide/faq"
}];

export const CAT_LABEL = Object.fromEntries(CATEGORIES.map(c => [c.id, c.label]));

export const ICONS = {
  "get-set-up": <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z" /></svg>,
  collect: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><rect x="2" y="6" width="20" height="13" rx="2" /><path d="M2 11h20" /><path d="M6 15h4" /></svg>,
  payout: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M3 8h14M13 4l4 4-4 4" /><path d="M21 16H7M11 12l-4 4 4 4" /></svg>,
  cards: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><rect x="2" y="5" width="20" height="14" rx="2" /><path d="M2 9h20" /><rect x="5" y="13" width="5" height="3" rx="1" /></svg>,
  webhooks: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M4 12a8 8 0 0 1 8-8M20 12a8 8 0 0 1-8 8" /><path d="M12 4l3 3-3 3M12 20l-3-3 3-3" /></svg>,
  services: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><rect x="6" y="2" width="12" height="20" rx="3" /><path d="M10 18h4" /></svg>,
  dashboard: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M3 3v18h18" /><path d="M7 15l4-5 3 3 5-7" /></svg>,
  account: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M12 3l7 3v6c0 4.2-2.8 7.6-7 9-4.2-1.4-7-4.8-7-9V6z" /><path d="M9 12l2 2 4-4" /></svg>,
  help: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" /></svg>
};

export const INITIAL = 12;

export const GetStartedHub = () => {
  const [query, setQuery] = useState("");
  const [filter, setFilter] = useState("all");
  const [expanded, setExpanded] = useState(false);
  const filtered = useMemo(() => {
    const term = query.trim().toLowerCase();
    return TASKS.filter(task => {
      const matchCat = filter === "all" || task.cat === filter;
      const hay = `${task.title} ${task.dest} ${CAT_LABEL[task.cat] || ""}`.toLowerCase();
      const matchQ = !term || hay.includes(term);
      return matchCat && matchQ;
    });
  }, [query, filter]);
  const showAll = expanded || filter !== "all" || query.trim().length > 0;
  const visible = showAll ? filtered : filtered.slice(0, INITIAL);
  const canShowMore = filter === "all" && !query.trim() && filtered.length > INITIAL && !expanded;
  return <div className="pl-gs">
      <style>{`
        .pl-gs{--card:#fff;--text:#14123a;--soft:#4f4c6b;--muted:#85819e;--line:#e2e0f5;--accent:#736cee;--accent-soft:rgba(115,108,238,.1);--radius:14px;font-family:"Mona Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--soft);line-height:1.5;width:100%}
        html.dark .pl-gs{--card:#12101f;--text:#eeecfb;--soft:#ada9c8;--muted:#837fa0;--line:#272442;--accent:#9a94f5;--accent-soft:rgba(154,148,245,.14)}
        .pl-gs,.pl-gs *{box-sizing:border-box}
        .pl-gs-wrap{max-width:1100px;margin:0 auto;padding:2.5rem 1.25rem 4rem;width:100%}
        .pl-gs-hero{text-align:center;max-width:720px;margin:0 auto 1.5rem}
        .pl-gs-hero h1{margin:0 0 .6rem;font-size:clamp(1.9rem,4vw,2.5rem);font-weight:700;letter-spacing:-.03em;color:var(--text);line-height:1.15}
        .pl-gs-hero p{margin:0 auto;color:var(--muted);font-size:1.05rem;max-width:540px}
        .pl-gs-search{display:flex;align-items:center;gap:.75rem;width:100%;max-width:640px;margin:1.5rem auto 0;padding:.15rem 1.1rem;border:1px solid var(--line);border-radius:999px;background:var(--card);box-shadow:0 1px 2px rgba(20,18,58,.05)}
        .pl-gs-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
        .pl-gs-search svg{width:18px;height:18px;color:var(--muted);flex:none}
        .pl-gs-search input{flex:1;border:0;outline:0;background:transparent;font:inherit;font-size:.98rem;color:var(--text);padding:14px 0;min-width:0}
        .pl-gs-search input::placeholder{color:var(--muted)}
        .pl-gs-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin:1.25rem auto 0;max-width:960px}
        .pl-gs-chip{appearance:none;border:1px solid var(--line);background:transparent;color:var(--text);border-radius:999px;padding:.45rem .9rem;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}
        .pl-gs-chip:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
        .pl-gs-chip.is-active{background:var(--accent);border-color:var(--accent);color:#fff}
        .pl-gs-grid{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:1rem !important;margin-top:1.75rem;width:100%}
        .pl-gs-grid > *{max-width:none !important;width:auto !important;min-width:0}
        .pl-gs a.pl-gs-card{display:flex !important;flex-direction:column !important;gap:.55rem;text-decoration:none !important;border:1px solid var(--line) !important;border-radius:var(--radius);background:var(--card);padding:1.1rem 1.15rem 1.2rem;min-height:124px;width:100% !important;max-width:none !important;transition:border-color .18s,box-shadow .18s}
        .pl-gs a.pl-gs-card:hover{border-color:var(--accent) !important;box-shadow:0 8px 24px rgba(20,18,58,.08);text-decoration:none !important}
        html.dark .pl-gs-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.35)}
        .pl-gs-card-top{display:flex;align-items:center;gap:.55rem}
        .pl-gs-ico{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);flex:none}
        .pl-gs-ico svg{width:14px;height:14px}
        .pl-gs-cat{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
        .pl-gs-title{font-size:1.02rem;font-weight:700;color:var(--text);letter-spacing:-.015em;line-height:1.3;margin:0;transition:color .18s}
        .pl-gs-card:hover .pl-gs-title{color:var(--accent)}
        .pl-gs-dest{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--muted);margin-top:auto;transition:color .18s}
        .pl-gs-card:hover .pl-gs-dest{color:var(--accent)}
        .pl-gs-arrow{width:12px;height:12px;opacity:0;transform:translate(-2px,2px);transition:opacity .18s,transform .18s;flex:none}
        .pl-gs-card:hover .pl-gs-arrow{opacity:1;transform:translate(0,0)}
        .pl-gs-empty{text-align:center;padding:2.5rem 1rem;color:var(--muted);grid-column:1/-1}
        .pl-gs-empty a{color:var(--accent);text-decoration:none;font-weight:600}
        .pl-gs-more-wrap{display:flex;justify-content:center;margin-top:1.75rem}
        .pl-gs-more{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:999px;padding:.7rem 1.4rem;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}
        .pl-gs-more:hover{border-color:var(--accent);color:var(--accent)}
        @media (max-width:960px){.pl-gs-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}}
        @media (max-width:600px){.pl-gs-grid{grid-template-columns:1fr !important}.pl-gs-wrap{padding-top:1.5rem}}
      `}</style>
      <div className="pl-gs-wrap">
        <div className="pl-gs-hero">
          <h1>What do you want to do?</h1>
          <p>Find the task you need across the Pila dashboard and API — start typing, or browse by area.</p>
          <label className="pl-gs-search">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><circle cx="11" cy="11" r="7" /><path d="m20 20-3.5-3.5" /></svg>
            <input type="search" value={query} onChange={e => {
    setQuery(e.target.value);
    setExpanded(!!e.target.value.trim());
  }} placeholder="Create a wallet, send a transfer, issue a card..." autoComplete="off" />
          </label>
        </div>

        <div className="pl-gs-chips" role="tablist">
          {CATEGORIES.map(cat => <button key={cat.id} type="button" className={`pl-gs-chip${filter === cat.id ? " is-active" : ""}`} onClick={() => {
    setFilter(cat.id);
    setExpanded(cat.id !== "all");
  }}>
              {cat.label}
            </button>)}
        </div>

        <div className="pl-gs-grid">
          {visible.map(task => <a key={`${task.cat}-${task.title}`} className="pl-gs-card" href={task.href}>
              <span className="pl-gs-card-top">
                <span className="pl-gs-ico">{ICONS[task.cat]}</span>
                <span className="pl-gs-cat">{CAT_LABEL[task.cat]}</span>
              </span>
              <span className="pl-gs-title">{task.title}</span>
              <span className="pl-gs-dest">
                {task.dest}
                <svg className="pl-gs-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.4" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M7 17L17 7M8 7h9v9" /></svg>
              </span>
            </a>)}
          {filtered.length === 0 && <div className="pl-gs-empty">
              No tasks match that. Try a different word, or browse the{" "}
              <a href="/api-reference/get-started/introduction">API reference</a>.
            </div>}
        </div>

        {canShowMore && <div className="pl-gs-more-wrap">
            <button type="button" className="pl-gs-more" onClick={() => setExpanded(true)}>
              Show more
            </button>
          </div>}
      </div>
    </div>;
};

<GetStartedHub />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.