> ## 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.

# Pila

> Pila is the payments, wallet and card-issuing API for Nigerian businesses — create NUBAN wallets, move money to any bank, and issue virtual USD cards with one integration.

<div
  className="pl-home"
  dangerouslySetInnerHTML={{ __html: `
<style>
/* Mona Sans (self-hosted variable font — matches the docs) */
@font-face{
font-family:"Mona Sans";
src:url("https://mintcdn.com/dojah-9b16f14e/gbqe8nXs4Wupm4KV/fonts/MonaSansVF.woff2?fit=max&auto=format&n=gbqe8nXs4Wupm4KV&q=85&s=ee87ee4b38c7480e72661bcd6e91be90") format("woff2-variations"),
  url("https://mintcdn.com/dojah-9b16f14e/gbqe8nXs4Wupm4KV/fonts/MonaSansVF.woff2?fit=max&auto=format&n=gbqe8nXs4Wupm4KV&q=85&s=ee87ee4b38c7480e72661bcd6e91be90") format("woff2");
font-weight:200 900;font-style:normal;font-display:swap;
}
@font-face{
font-family:"Mona Sans";
src:url("https://mintcdn.com/dojah-9b16f14e/gbqe8nXs4Wupm4KV/fonts/MonaSansVF-Italic.woff2?fit=max&auto=format&n=gbqe8nXs4Wupm4KV&q=85&s=c1de1f2df505fcb5da286ef84b511771") format("woff2-variations"),
  url("https://mintcdn.com/dojah-9b16f14e/gbqe8nXs4Wupm4KV/fonts/MonaSansVF-Italic.woff2?fit=max&auto=format&n=gbqe8nXs4Wupm4KV&q=85&s=c1de1f2df505fcb5da286ef84b511771") format("woff2");
font-weight:200 900;font-style:italic;font-display:swap;
}
:root{
--paper:#F1F0FE;
--paper-2:#F8F8FE;
--card:#FFFFFF;
--ink:#14123A;
--body:#4F4C6B;
--muted:#85819E;
--clay:#736CEE;
--clay-deep:#5A52DB;
--ochre:#F5A524;
--ochre-deep:#C67F0C;
--forest:#2C9C7E;
--forest-soft:#DCF0E9;
--rose:#EEECFE;
--sky:#E7E4FD;
--line:#E2E0F5;
--edge:#14123A;
--radius:20px;
--radius-sm:12px;
}
/* ---- dark theme (mapped to Mintlify's .dark on <html>) ---- */
html.dark{
--paper:#0C0B1A;
--paper-2:#131124;
--card:#1A182F;
--ink:#EEECFB;
--body:#ADA9C8;
--muted:#837FA0;
--clay:#948EF5;
--clay-deep:#B8B3FA;
--ochre:#FBBF5C;
--ochre-deep:#FBBF5C;
--forest:#48BE9C;
--forest-soft:rgba(72,190,156,.16);
--rose:#1D1A35;
--sky:#1A1733;
--line:#2A2745;
--edge:#EEECFB;
}
html.dark .pl-home .grain{opacity:0}
html.dark .pl-home header.nav{background:rgba(12,11,26,.82)}
html.dark .pl-home header.nav.scrolled{background:rgba(12,11,26,.94);border-color:var(--line)}
html.dark .pl-home .way .ill{background:#EDEBFC !important}
.pl-home .theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;
background:transparent;color:var(--muted);border:none;border-radius:7px;cursor:pointer;padding:0;
transition:background .15s,color .15s}
.pl-home .theme-toggle:hover{background:var(--paper-2);color:var(--ink)}
.pl-home .theme-toggle svg{width:15px;height:15px}
.pl-home .theme-toggle .moon{display:block}.pl-home .theme-toggle .sun{display:none}
html.dark .pl-home .theme-toggle .moon{display:none}
html.dark .pl-home .theme-toggle .sun{display:block}

/* ===== Mintlify integration (home page only) ===== */
#navbar.is-custom{display:none !important}
#content-area{padding:0 !important}
#content-area .mdx-content,#content{max-width:none !important;margin:0 !important;padding:0 !important}

.pl-home *{box-sizing:border-box;margin:0;padding:0}
.pl-home{
font-family:'Mona Sans',ui-sans-serif,system-ui,-apple-system,sans-serif;
color:var(--body);background:var(--paper);line-height:1.62;overflow-x:clip;overflow-y:visible;
min-height:100vh;
}
html{scroll-behavior:smooth}
.pl-home .grain{position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.5;mix-blend-mode:multiply;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.14'/%3E%3C/svg%3E");}
.pl-home h1,.pl-home h2,.pl-home h3,.pl-home h4,.pl-home .display{font-family:'Mona Sans',ui-sans-serif,system-ui,sans-serif;color:var(--ink);letter-spacing:-.01em;line-height:1.05;font-optical-sizing:auto}
.pl-home a{color:inherit;text-decoration:none}
.pl-home img,.pl-home svg{display:block;max-width:100%}
.pl-home .wrap{max-width:1160px;margin:0 auto;padding:0 26px}
.pl-home em.acc{font-style:italic;color:var(--clay)}

.pl-home .kicker{display:inline-flex;align-items:center;gap:11px;font-family:'Mona Sans';font-size:12.5px;font-weight:700;
letter-spacing:.16em;text-transform:uppercase;color:var(--clay-deep)}
.pl-home .kicker::before{content:"";width:26px;height:2px;background:var(--clay);border-radius:2px}

.pl-home .btn{display:inline-flex;align-items:center;gap:9px;font-family:'Mona Sans';font-weight:600;font-size:15px;
padding:11px 20px;border-radius:10px;cursor:pointer;border:1px solid transparent;
transition:background .15s, color .15s, border-color .15s, transform .05s;white-space:nowrap}
.pl-home .btn svg{width:17px;height:17px}
.pl-home .btn:active{transform:translateY(1px)}
.pl-home .btn-primary{background:var(--clay);color:#fff}
.pl-home .btn-primary:hover{background:var(--clay-deep)}
.pl-home .btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.pl-home .btn-ghost:hover{background:var(--paper-2);border-color:var(--muted)}
.pl-home .btn-arrow svg{transition:transform .18s}
.pl-home .btn-arrow:hover svg{transform:translateX(3px)}

.pl-home header.nav{position:sticky;top:0;z-index:100;background:rgba(241,240,254,.86);backdrop-filter:blur(10px);
border-bottom:1.5px solid transparent;transition:border-color .25s, background .25s}
.pl-home header.nav.scrolled{border-color:var(--line);background:rgba(241,240,254,.96)}
.pl-home .nav-inner{display:flex;align-items:center;gap:26px;height:72px;position:relative}
.pl-home .logo{display:flex;align-items:center;gap:11px;font-family:'Mona Sans';font-weight:700;font-size:22px;color:var(--ink)}
.pl-home .logo .logo-img{height:26px;width:auto;display:block}
.pl-home .nav-links{display:flex;gap:2px;position:absolute;left:50%;transform:translateX(-50%)}
.pl-home .nav-links a{font-size:15px;font-weight:500;color:var(--body);padding:9px 13px;border-radius:9px;transition:color .15s,background .15s}
.pl-home .nav-links a:hover{color:var(--ink);background:var(--rose)}
.pl-home .nav-cta{margin-left:auto;display:flex;align-items:center;gap:12px}
.pl-home .menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;
background:transparent;color:var(--body);border:1px solid var(--line);border-radius:10px;
cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.pl-home .menu-btn:hover{background:var(--paper-2);color:var(--ink);border-color:var(--muted)}
.pl-home .menu-btn svg{width:20px;height:20px}
.pl-home .mobile-menu{display:none;flex-direction:column;gap:5px;padding:14px 26px 22px;
background:var(--paper);border-bottom:1.5px solid var(--line)}
.pl-home .mobile-menu.open{display:flex}
.pl-home .mobile-menu a{color:var(--ink);font-weight:600;padding:11px 12px;border-radius:10px}
.pl-home .mobile-menu a:hover{background:var(--rose)}
.pl-home .mobile-menu .btn{justify-content:center;margin-top:6px}

.pl-home .hero{position:relative;padding:96px 0 30px;overflow:hidden}
.pl-home .hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:36px;align-items:center;position:relative;z-index:2}
.pl-home .hero h1{font-size:clamp(42px,6vw,72px);font-weight:600;color:var(--ink);margin:20px 0 0}
.pl-home .hero h1 .u{position:relative;white-space:nowrap}
.pl-home .hero h1 .u svg{position:absolute;left:-2%;bottom:-.24em;width:104%;height:.3em;overflow:visible}
.pl-home .hero p.lead{font-size:19px;color:var(--body);margin:26px 0 30px;max-width:500px}
.pl-home .hero p.lead b{color:var(--ink);font-weight:600}
.pl-home .hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.pl-home .hero-meta{display:flex;gap:30px;margin-top:36px;flex-wrap:wrap}
.pl-home .hero-meta .m b{font-family:'Mona Sans';font-size:30px;color:var(--clay);font-weight:600;display:block;line-height:1}
.pl-home .hero-meta .m span{font-size:13px;color:var(--muted);margin-top:3px;display:block}
.pl-home .hero-art{position:relative}
.pl-home .hero-art > svg{width:100%;height:auto}

.pl-home .trust{margin-top:88px;position:relative;z-index:2;text-align:center}
.pl-home .trust p{font-family:'Mona Sans';font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:16px}
.pl-home .trust-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.pl-home .tag-item{display:inline-flex;align-items:center;gap:9px;background:var(--card);border:1.5px solid var(--line);
border-radius:11px;padding:9px 16px;font-weight:600;font-size:14px;color:var(--ink)}
.pl-home .tag-item:nth-child(odd){transform:rotate(-1deg)}
.pl-home .tag-item:nth-child(even){transform:rotate(1deg)}

.pl-home .sec{padding:80px 0;position:relative}
.pl-home .sec-head{max-width:600px;margin-bottom:44px}
.pl-home .sec-head.center{margin-left:auto;margin-right:auto;text-align:center}
.pl-home .sec-head h2{font-size:clamp(30px,4vw,48px);font-weight:600;margin:15px 0 12px}
.pl-home .sec-head p{font-size:17.5px;color:var(--body)}

.pl-home .ways-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:40px;flex-wrap:wrap}
.pl-home .ways-head .sec-head{margin-bottom:0}
.pl-home .ways{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.pl-home .way{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 20px 22px;
transition:border-color .15s, box-shadow .15s, transform .1s;position:relative}
.pl-home .way:hover{border-color:var(--clay);box-shadow:0 12px 32px rgba(20,18,58,.10);transform:translateY(-3px)}
.pl-home .way .ill{height:112px;margin-bottom:16px;border-radius:14px;border:1px solid var(--line);display:grid;place-items:center;overflow:hidden}
.pl-home .way h3{font-size:19px;font-weight:600;margin-bottom:7px;color:var(--ink)}
.pl-home .way p{font-size:14px;color:var(--body);line-height:1.5}
.pl-home .way .lvl{position:absolute;top:32px;right:32px;font-family:'Mona Sans';font-size:10.5px;font-weight:700;
letter-spacing:.05em;text-transform:uppercase;color:var(--clay-deep);background:var(--card);padding:4px 10px;border-radius:100px;
border:1px solid var(--line);z-index:1}
.pl-home .way a.more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:16px;font-size:13.5px;font-weight:700;color:var(--clay)}
.pl-home .way a.more svg{width:14px;height:14px;transition:transform .18s}
.pl-home .way:hover a.more svg{transform:translateX(3px)}

.pl-home .usecases{background:var(--paper-2);border-top:1.5px solid var(--line);border-bottom:1.5px solid var(--line)}
.pl-home .uc-tabs{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-bottom:34px}
.pl-home .uc-tab{display:inline-flex;align-items:center;gap:9px;padding:10px 20px;border-radius:100px;background:var(--card);
border:1px solid var(--line);cursor:pointer;font-family:'Mona Sans';font-weight:600;font-size:14.5px;color:var(--ink);
transition:background .15s, border-color .15s, color .15s}
.pl-home .uc-tab:hover{background:var(--paper-2);border-color:var(--muted)}
.pl-home .uc-panel{display:none;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:36px;
box-shadow:0 20px 50px rgba(20,18,58,.10)}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pl-home .uc-info h3{font-size:28px;font-weight:600;margin-bottom:12px}
.pl-home .uc-info p{color:var(--body);font-size:16px;margin-bottom:20px}
.pl-home .uc-info .tags{display:flex;gap:8px;flex-wrap:wrap}
.pl-home .uc-info .tags span{font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:9px;background:var(--rose);
color:var(--clay-deep);border:1.2px solid var(--line)}
.pl-home .uc-link{display:inline-flex;align-items:center;gap:8px;margin-top:24px;align-self:flex-start;font-weight:600;font-size:14.5px;
color:#fff;background:var(--clay);padding:10px 18px;border-radius:100px;transition:background .15s}
.pl-home .uc-link:hover{background:var(--clay-deep)}
.pl-home .flow{display:flex;flex-direction:column;gap:11px}
.pl-home .flow-step{display:flex;align-items:center;gap:15px;background:var(--card);border:1px solid var(--line);
border-radius:14px;padding:13px 17px;transition:border-color .15s, box-shadow .15s, transform .05s}
.pl-home .flow-step:hover{border-color:var(--clay);box-shadow:0 6px 18px rgba(20,18,58,.09)}
.pl-home .flow-step:active{transform:translateY(1px)}
.pl-home .flow-step .num{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:#FFFFFF;
font-family:'Mona Sans';font-weight:600;font-size:17px;flex-shrink:0;background:var(--clay)}
.pl-home .flow-step .t b{display:block;font-family:'Mona Sans';font-weight:600;font-size:16px;color:var(--ink)}
.pl-home .flow-step .t span{font-size:13px;color:var(--muted)}
.pl-home .flow-step .chip{margin-left:auto;font-size:11px;font-weight:700;color:var(--forest);background:var(--forest-soft);
padding:4px 11px;border-radius:100px;border:1.2px solid #bfe3d7;white-space:nowrap}

.pl-home .dev{display:grid;grid-template-columns:1.02fr .98fr;gap:44px;align-items:start}
.pl-home .dev-tools{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.pl-home .tool{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;
transition:border-color .15s, box-shadow .15s, transform .1s}
.pl-home .tool:hover{border-color:var(--clay);box-shadow:0 12px 32px rgba(20,18,58,.10);transform:translateY(-3px)}
.pl-home .tool .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;margin-bottom:15px;background:var(--sky);color:var(--clay)}
.pl-home .tool .ic svg{width:22px;height:22px}
.pl-home .tool h4{font-size:17px;font-weight:600;margin-bottom:6px;color:var(--ink)}
.pl-home .tool p{font-size:13.5px;color:var(--body);line-height:1.5;margin-bottom:14px}
.pl-home .tool .snip{align-self:flex-start;max-width:100%;font-family:ui-monospace,'SF Mono','Cascadia Code',Menlo,monospace;font-size:11.5px;
color:var(--clay-deep);background:var(--paper-2);border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-bottom:16px;
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-home .tool .go{margin-top:auto;font-size:13px;font-weight:700;color:var(--clay);display:inline-flex;align-items:center;gap:6px}
.pl-home .tool .go svg{width:14px;height:14px;transition:transform .18s}
.pl-home .tool:hover .go svg{transform:translateX(3px)}
.pl-home .code-card{background:#17152B;border:1.5px solid var(--edge);border-radius:18px;box-shadow:6px 6px 0 var(--edge);
overflow:hidden;position:sticky;top:92px;transform:rotate(-.5deg)}
.pl-home .code-top{display:flex;align-items:center;gap:13px;padding:13px 16px;border-bottom:1.5px solid rgba(255,255,255,.09)}
.pl-home .dots{display:flex;gap:7px}
.pl-home .dots i{width:12px;height:12px;border-radius:50%;display:block;border:1px solid rgba(0,0,0,.3)}
.pl-home .code-langs{display:flex;gap:3px;margin-left:5px}
.pl-home .code-langs label{background:transparent;border:none;color:#9b96bd;font-family:'Mona Sans';font-size:12.5px;font-weight:600;
padding:6px 11px;border-radius:8px;cursor:pointer;transition:all .14s}
.pl-home .code-langs label:hover{color:#cdc9e4}
.pl-home .copy{margin-left:auto;background:rgba(255,255,255,.09);border:none;color:#cdc9e4;font-size:12px;font-weight:600;
padding:6px 12px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .14s}
.pl-home .copy:hover{background:rgba(255,255,255,.17)}
.pl-home .copy svg{width:14px;height:14px}
.pl-home .code-body{padding:19px 21px;font-family:ui-monospace,'SF Mono','Cascadia Code',Menlo,monospace;font-size:13px;
line-height:1.75;overflow-x:auto;color:#cdc9e4}
.pl-home .code-body pre{display:none;white-space:pre}
.pl-home .tk-key{color:#c4a7f7}.pl-home .tk-fn{color:#6fd3b8}.pl-home .tk-str{color:#f0a980}.pl-home .tk-var{color:#a9a3e8}.pl-home .tk-com{color:#77729b;font-style:italic}.pl-home .tk-num{color:#f28b82}
.pl-home .resp{margin-top:15px;background:rgba(44,156,126,.16);border:1.5px solid rgba(44,156,126,.4);border-radius:11px;
padding:11px 13px;display:flex;align-items:center;gap:10px}
.pl-home .resp .badge{background:var(--forest);color:#eafff8;font-weight:800;font-size:11px;padding:3px 9px;border-radius:100px}
.pl-home .resp span{color:#a9dbcd;font-size:12.5px;font-family:ui-monospace,monospace}

/* CSS-only flow tabs */
.pl-home .uc-radio{position:absolute;width:0;height:0;opacity:0;pointer-events:none}
.pl-home #uc-r-collect:checked ~ .uc-tabs label[for="uc-r-collect"],
.pl-home #uc-r-payout:checked ~ .uc-tabs label[for="uc-r-payout"],
.pl-home #uc-r-cards:checked ~ .uc-tabs label[for="uc-r-cards"],
.pl-home #uc-r-vas:checked ~ .uc-tabs label[for="uc-r-vas"]{background:var(--clay);color:#FFFFFF;border-color:transparent}
.pl-home #uc-r-collect:checked ~ .uc-panels #uc-collect,
.pl-home #uc-r-payout:checked ~ .uc-panels #uc-payout,
.pl-home #uc-r-cards:checked ~ .uc-panels #uc-cards,
.pl-home #uc-r-vas:checked ~ .uc-panels #uc-vas{display:grid;grid-template-columns:.95fr 1.15fr;gap:36px;align-items:center;animation:fade .35s ease}

/* CSS-only code language switcher */
.pl-home .code-radio{position:absolute;width:0;height:0;opacity:0;pointer-events:none}
.pl-home #lang-curl:checked ~ .code-body pre[data-lang="curl"],
.pl-home #lang-node:checked ~ .code-body pre[data-lang="node"],
.pl-home #lang-python:checked ~ .code-body pre[data-lang="python"]{display:block}
.pl-home #lang-curl:checked ~ .code-top label[for="lang-curl"],
.pl-home #lang-node:checked ~ .code-top label[for="lang-node"],
.pl-home #lang-python:checked ~ .code-top label[for="lang-python"]{background:rgba(115,108,238,.30);color:#e7e3ff}

.pl-home .guides{background:#1B1856;color:#DCD9F5;border:none;border-radius:26px;padding:52px;
box-shadow:0 24px 54px rgba(27,24,86,.30);position:relative;overflow:hidden}
.pl-home .guides h2{color:#fff}
.pl-home .guides .sec-head p{color:#b2acd6}
.pl-home .guide-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px;position:relative;z-index:2}
.pl-home .guide{display:flex;align-items:center;gap:15px;background:rgba(255,255,255,.05);border:1.5px solid rgba(255,255,255,.14);
border-radius:14px;padding:17px 19px;transition:background .16s, transform .16s}
.pl-home .guide:hover{background:rgba(255,255,255,.1);transform:translate(-2px,-2px)}
.pl-home .guide .gi{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;flex-shrink:0;border:1.4px solid rgba(255,255,255,.2)}
.pl-home .guide .gi svg{width:21px;height:21px}
.pl-home .guide b{display:block;font-family:'Mona Sans';font-weight:600;font-size:16px;color:#fff}
.pl-home .guide span{font-size:13px;color:#ada7cf}
.pl-home .guide .arw{margin-left:auto;color:#8a84b5;transition:transform .18s,color .18s}
.pl-home .guide:hover .arw{transform:translateX(4px);color:#a79fff}
.pl-home .guides-more{display:inline-flex;align-items:center;gap:8px;margin-top:28px;font-family:'Mona Sans';font-weight:600;font-size:14.5px;
color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);padding:11px 22px;border-radius:10px;
transition:background .15s,border-color .15s}
.pl-home .guides-more:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.42)}
.pl-home .guides-more svg{width:15px;height:15px;transition:transform .18s}
.pl-home .guides-more:hover svg{transform:translateX(3px)}

.pl-home .cta-band{padding:36px 0 92px}
.pl-home .cta-inner{background:linear-gradient(135deg,#2A2470 0%,#736CEE 100%);border:none;border-radius:26px;padding:76px 56px;
display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;overflow:hidden;
box-shadow:0 28px 60px rgba(20,18,58,.24)}
.pl-home .cta-inner::before{content:"";position:absolute;top:-70%;left:50%;transform:translateX(-50%);width:85%;height:200%;pointer-events:none;
background:radial-gradient(circle,rgba(255,255,255,.20),transparent 60%)}
.pl-home .cta-inner > div{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center}
.pl-home .cta-inner h2{color:#FFFFFF;font-size:clamp(32px,4.4vw,50px);font-weight:600;max-width:16ch;line-height:1.06}
.pl-home .cta-inner p{color:#EAE7FC;font-size:17.5px;margin:18px auto 30px;max-width:500px}
.pl-home .cta-inner .btn-white{background:#fff;color:#5A52DB;border-color:#fff}
.pl-home .cta-inner .btn-white:hover{background:var(--paper);border-color:var(--paper)}
.pl-home .cta-inner .btn-line{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}
.pl-home .cta-inner .btn-line:hover{background:rgba(255,255,255,.14);border-color:#fff}
.pl-home .cta-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}

.pl-home footer{background:#1B1856;color:#a39dc7;padding:60px 0 32px}
.pl-home .foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:34px;padding-bottom:42px;border-bottom:1.5px solid rgba(255,255,255,.1)}
.pl-home .foot-brand .logo{color:#fff}
.pl-home .foot-brand p{margin-top:15px;font-size:14px;max-width:270px;color:#958fbd}
.pl-home .foot-col h5{color:#fff;font-family:'Mona Sans';font-size:15px;font-weight:600;margin-bottom:14px}
.pl-home .foot-col a{display:block;font-size:14px;padding:5px 0;color:#a39dc7;transition:color .14s}
.pl-home .foot-col a:hover{color:#a79fff}
.pl-home .foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:24px;font-size:13px;color:#847ead;flex-wrap:wrap;gap:14px}

.pl-home .reveal{opacity:0;transform:translateY(22px);transition:opacity .55s ease, transform .55s ease}
.pl-home .reveal.in{opacity:1;transform:none}

@media(max-width:940px){
.pl-home .nav-links{display:none}.pl-home .nav-cta .btn-ghost{display:none}.pl-home .menu-btn{display:flex}
.pl-home .hero-grid{grid-template-columns:1fr;gap:22px}.pl-home .hero-art{width:100%;max-width:440px;margin:0 auto}
.pl-home .ways{grid-template-columns:1fr 1fr}.pl-home .dev{grid-template-columns:1fr}
.pl-home .code-card{position:relative;top:0}
.pl-home #uc-r-collect:checked ~ .uc-panels #uc-collect,
.pl-home #uc-r-payout:checked ~ .uc-panels #uc-payout,
.pl-home #uc-r-cards:checked ~ .uc-panels #uc-cards,
.pl-home #uc-r-vas:checked ~ .uc-panels #uc-vas{grid-template-columns:1fr}
.pl-home .cta-inner{padding:52px 26px}
.pl-home .guides{padding:40px 26px}.pl-home .foot-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
.pl-home .ways{grid-template-columns:1fr}.pl-home .dev-tools{grid-template-columns:1fr}.pl-home .guide-grid{grid-template-columns:1fr}
.pl-home .foot-grid{grid-template-columns:1fr}.pl-home .sec{padding:56px 0}.pl-home .hero-meta{gap:20px}
.pl-home .nav-cta .btn-primary{display:none}
.pl-home .trust-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pl-home .trust-row .tag-item{justify-content:center;transform:none;font-size:13px;padding:10px 10px}
.pl-home .trust-row .tag-item:last-child{grid-column:1 / -1;justify-self:center}
}
</style>

<div class="grain"></div>

<header class="nav" id="nav">
<div class="wrap nav-inner">
<a href="https://trypila.co" class="logo">
  <img class="logo-img" src="/assets/pila-logo.svg" alt="Pila" width="48" height="26" />
</a>
<nav class="nav-links">
  <a href="#ways">What you can build</a>
  <a href="#flows">Money flows</a>
  <a href="#dev">Developer tools</a>
  <a href="#guides">Guides</a>
</nav>
<div class="nav-cta">
  <button type="button" class="theme-toggle" id="themeToggle" aria-label="Toggle dark mode" title="Toggle theme">
    <svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.8A9 9 0 1 1 11.2 3 7 7 0 0 0 21 12.8Z"/></svg>
    <svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4.2"/><path d="M12 2v2.4M12 19.6V22M4.9 4.9l1.7 1.7M17.4 17.4l1.7 1.7M2 12h2.4M19.6 12H22M4.9 19.1l1.7-1.7M17.4 6.6l1.7-1.7"/></svg>
  </button>
  <a href="https://dashboard.trypila.co/" target="_blank" rel="noopener" class="btn btn-ghost">Sign in</a>
  <a href="https://dashboard.trypila.co/" target="_blank" rel="noopener" class="btn btn-primary btn-arrow">Get API keys <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
  <button type="button" class="menu-btn" id="menuBtn" aria-label="Menu" aria-controls="mobileMenu" aria-expanded="false">
    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M3 6h18M3 12h18M3 18h18"/></svg>
  </button>
</div>
</div>
<div class="mobile-menu" id="mobileMenu">
<a href="#ways">What you can build</a>
<a href="#flows">Money flows</a>
<a href="#dev">Developer tools</a>
<a href="#guides">Guides</a>
<a href="https://dashboard.trypila.co/" target="_blank" rel="noopener" class="btn btn-ghost">Sign in</a>
<a href="https://dashboard.trypila.co/" target="_blank" rel="noopener" class="btn btn-primary">Get API keys</a>
</div>
</header>

<section class="hero">
<div class="wrap hero-grid">
<div class="hero-copy">
  <h1>Move money <span class="u">in minutes<svg viewBox="0 0 320 24" preserveAspectRatio="none" fill="none"><path d="M4 15c40-9 92-11 150-9 60 2 110 6 164-3" stroke="#736CEE" stroke-width="6" stroke-linecap="round"/></svg></span>.</h1>
  <p class="lead">Dedicated NUBAN wallets, bank transfers across Nigeria and virtual USD cards — all from <b>one API</b>. Build in the sandbox today and flip the same calls to live when you are ready.</p>
  <div class="hero-cta">
    <a href="https://dashboard.trypila.co/" target="_blank" rel="noopener" class="btn btn-primary btn-arrow">Get API keys <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
    <a href="/api-reference/get-started/quickstart" class="btn btn-ghost">Read the docs</a>
  </div>
  <div class="hero-meta">
    <div class="m"><b>210+</b><span>Nigerian banks reachable</span></div>
    <div class="m"><b>2</b><span>currencies — NGN &amp; USD</span></div>
    <div class="m"><b>25+</b><span>REST endpoints</span></div>
  </div>
</div>
<div class="hero-art">
  <svg viewBox="0 0 520 470" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Hand-drawn wallet, transfer and virtual card illustration" style="overflow:visible">
    <defs><style>.st{stroke:#14123A;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}</style></defs>
    <path class="st" d="M40 60c4-8 10-8 14 0M47 52v16" stroke-width="2.6"/>
    <path class="st" d="M470 300c6 4 6 12 0 16" />
    <path d="M56 380c8-6 18-6 26 0" class="st" fill="none"/>
    <g transform="rotate(-3 210 240)">
      <rect x="46" y="118" width="330" height="212" rx="18" fill="#FFFFFF" class="st"/>
      <rect x="46" y="118" width="330" height="52" rx="18" fill="#14123A"/>
      <rect x="46" y="150" width="330" height="20" fill="#14123A"/>
      <text x="72" y="151" font-family="Mona Sans,sans-serif" font-size="17" font-weight="600" fill="#FFFFFF">NGN WALLET</text>
      <text x="72" y="212" font-family="Mona Sans,sans-serif" font-size="12" font-weight="600" fill="#85819E" letter-spacing="1">AVAILABLE BALANCE</text>
      <text x="72" y="250" font-family="Mona Sans,sans-serif" font-size="34" font-weight="600" fill="#14123A">&#8358;990,075</text>
      <path class="st" d="M72 274h130" stroke-width="2.2"/>
      <text x="72" y="300" font-family="Mona Sans,sans-serif" font-size="13" font-weight="500" fill="#4F4C6B">NUBAN 5243202142</text>
      <rect x="242" y="196" width="112" height="112" rx="14" fill="#EEECFE" class="st"/>
      <path d="M268 252h60M310 234l18 18-18 18" stroke="#736CEE" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
      <text x="298" y="222" font-family="Mona Sans" font-size="11" font-weight="700" fill="#5A52DB" text-anchor="middle" letter-spacing="1">TRANSFER</text>
    </g>
    <g transform="rotate(-13 400 130)" opacity="0.92">
      <circle cx="400" cy="130" r="56" fill="none" stroke="#736CEE" stroke-width="4.5"/>
      <circle cx="400" cy="130" r="46" fill="none" stroke="#736CEE" stroke-width="2" stroke-dasharray="2 5"/>
      <path d="M383 130l11 11 24-25" stroke="#736CEE" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
      <text x="400" y="100" font-family="Mona Sans,sans-serif" font-size="12" font-weight="700" fill="#736CEE" text-anchor="middle" letter-spacing="2">SETTLED</text>
      <text x="400" y="170" font-family="Mona Sans,sans-serif" font-size="9" font-weight="600" fill="#736CEE" text-anchor="middle" letter-spacing="1">PILA &#183; PAYOUTS</text>
    </g>
    <g transform="rotate(5 400 370)">
      <rect x="310" y="300" width="180" height="116" rx="16" fill="#17152B" class="st"/>
      <rect x="310" y="322" width="180" height="16" fill="#0F0E22"/>
      <rect x="328" y="356" width="34" height="24" rx="5" fill="#F5A524" class="st" stroke="#0F0E22"/>
      <path d="M328 368h34M345 356v24" stroke="#0F0E22" stroke-width="1.6" fill="none"/>
      <text x="376" y="374" font-family="ui-monospace,monospace" font-size="14" font-weight="600" fill="#CDC9E4" letter-spacing="2">&#183;&#183;&#183;&#183; 4910</text>
      <text x="328" y="402" font-family="Mona Sans" font-size="10" font-weight="700" fill="#6FD3B8" letter-spacing="1">VIRTUAL USD &#183; ACTIVE</text>
      <circle cx="458" cy="398" r="11" fill="#736CEE" opacity=".85"/>
      <circle cx="472" cy="398" r="11" fill="#F5A524" opacity=".85"/>
    </g>
    <path d="M300 300 C 330 340, 320 300, 350 300" stroke="#736CEE" stroke-width="2.4" stroke-dasharray="1 7" stroke-linecap="round" fill="none"/>
    <g transform="rotate(-6 96 372)">
      <rect x="24" y="346" width="150" height="52" rx="12" fill="#FFFFFF" class="st"/>
      <circle cx="50" cy="372" r="13" fill="#2C9C7E" class="st"/>
      <path d="M45 372l4 4 7-8" stroke="#FFFFFF" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
      <path class="st" d="M72 366h82M72 380h56" stroke-width="2.2"/>
    </g>
  </svg>
</div>
</div>

<div class="wrap trust">
<p>Built for teams that move money every day</p>
<div class="trust-row">
  <span class="tag-item">Payroll platforms</span>
  <span class="tag-item">SME lenders</span>
  <span class="tag-item">Fintechs &amp; wallets</span>
  <span class="tag-item">Marketplaces</span>
  <span class="tag-item">Subscription products</span>
</div>
</div>
</section>

<section class="sec" id="ways">
<div class="wrap">
<div class="ways-head reveal">
  <div class="sec-head" style="max-width:520px">
    <h2>Pick what you need to build</h2>
    <p>Four product areas, one set of credentials. Start with a wallet, add payouts, then issue cards when you are ready.</p>
  </div>
  <a href="/api-reference/get-started/introduction" class="btn btn-ghost btn-arrow">See the full API <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
</div>
<div class="ways">
  <div class="way reveal">
    <span class="lvl">Collect</span>
    <div class="ill" style="background:var(--sky)">
      <svg width="130" height="96" viewBox="0 0 130 96" fill="none"><rect x="22" y="20" width="86" height="58" rx="9" fill="#FFFFFF" stroke="#14123A" stroke-width="2.2"/><path d="M22 36h86" stroke="#14123A" stroke-width="2.2"/><circle cx="31" cy="28" r="2.4" fill="#736CEE"/><circle cx="39" cy="28" r="2.4" fill="#F5A524"/><rect x="32" y="46" width="44" height="7" rx="3.5" fill="#E7E4FD"/><rect x="32" y="59" width="28" height="7" rx="3.5" fill="#E7E4FD"/><rect x="82" y="46" width="18" height="20" rx="5" fill="#736CEE"/><path d="M87 56l3 3 6-7" stroke="#FFF" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"/></svg>
    </div>
    <h3>Wallets</h3>
    <p>Give every customer a dedicated NUBAN that credits their balance the moment money lands.</p>
    <a href="/api-reference/wallets/create-wallet" class="more">Create a wallet <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
  </div>
  <div class="way reveal">
    <span class="lvl">Disburse</span>
    <div class="ill" style="background:var(--forest-soft)">
      <svg width="130" height="96" viewBox="0 0 130 96" fill="none"><rect x="16" y="26" width="40" height="46" rx="8" fill="#FFFFFF" stroke="#14123A" stroke-width="2.2"/><rect x="24" y="36" width="24" height="6" rx="3" fill="#DCF0E9"/><rect x="24" y="48" width="24" height="6" rx="3" fill="#DCF0E9"/><rect x="24" y="60" width="15" height="6" rx="3" fill="#2C9C7E"/><path d="M62 49h16" stroke="#2C9C7E" stroke-width="2.4" stroke-dasharray="2 4" stroke-linecap="round"/><path d="M74 44l6 5-6 5" stroke="#2C9C7E" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" fill="none"/><rect x="88" y="26" width="26" height="20" rx="6" fill="#2C9C7E" stroke="#14123A" stroke-width="2.2"/><path d="M94 36l4 4 7-8" stroke="#FFFFFF" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" fill="none"/><rect x="88" y="52" width="26" height="20" rx="6" fill="#DCF0E9" stroke="#14123A" stroke-width="2.2"/></svg>
    </div>
    <h3>Payouts</h3>
    <p>Send funds from a wallet or your pool account to any of 210+ Nigerian banks.</p>
    <a href="/api-reference/wallets/transfer-funds" class="more">Send a transfer <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
  </div>
  <div class="way reveal">
    <span class="lvl">Spend</span>
    <div class="ill" style="background:var(--rose)">
      <svg width="130" height="96" viewBox="0 0 130 96" fill="none"><rect x="20" y="26" width="90" height="50" rx="9" fill="#17152B" stroke="#14123A" stroke-width="2.2"/><rect x="20" y="38" width="90" height="12" fill="#0F0E22"/><rect x="30" y="58" width="18" height="12" rx="3" fill="#F5A524"/><path d="M30 64h18M39 58v12" stroke="#0F0E22" stroke-width="1.4"/><rect x="56" y="61" width="42" height="5" rx="2.5" fill="#CDC9E4"/><circle cx="92" cy="32" r="0" fill="none"/></svg>
    </div>
    <h3>Virtual USD cards</h3>
    <p>Issue, fund, freeze and terminate dollar cards for online spend, with full transaction history.</p>
    <a href="/api-reference/cards/create-virtual-card" class="more">Issue a card <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
  </div>
  <div class="way reveal">
    <span class="lvl">Enrich</span>
    <div class="ill" style="background:#E3E1F4">
      <svg width="130" height="96" viewBox="0 0 130 96" fill="none"><rect x="20" y="20" width="90" height="56" rx="8" fill="#17152B" stroke="#14123A" stroke-width="2.2"/><path d="M20 34h90" stroke="#3a3560" stroke-width="1.8"/><circle cx="28" cy="27" r="2.4" fill="#736CEE"/><circle cx="36" cy="27" r="2.4" fill="#F5A524"/><circle cx="44" cy="27" r="2.4" fill="#2C9C7E"/><rect x="28" y="42" width="10" height="4" rx="2" fill="#c4a7f7"/><rect x="41" y="42" width="26" height="4" rx="2" fill="#6fd3b8"/><rect x="28" y="52" width="34" height="4" rx="2" fill="#a9a3e8"/><rect x="34" y="62" width="24" height="4" rx="2" fill="#f0a980"/><rect x="61" y="62" width="14" height="4" rx="2" fill="#77729b"/></svg>
    </div>
    <h3>General services</h3>
    <p>Resolve account names, look up bank codes, check card BINs and sell airtime or data.</p>
    <a href="/api-reference/general-services/resolve-nuban" class="more">Browse services <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
  </div>
</div>
</div>
</section>

<section class="sec usecases" id="flows">
<div class="wrap">
<div class="sec-head center reveal">
  <h2>The four money flows, <em class="acc">end to end</em></h2>
  <p>Every Pila integration is a short chain of calls. Here are the chains teams build most, in the order to build them.</p>
</div>

<div class="uc-switch">
  <input class="uc-radio" type="radio" name="uc" id="uc-r-collect" checked />
  <input class="uc-radio" type="radio" name="uc" id="uc-r-payout" />
  <input class="uc-radio" type="radio" name="uc" id="uc-r-cards" />
  <input class="uc-radio" type="radio" name="uc" id="uc-r-vas" />

  <div class="uc-tabs reveal">
    <label class="uc-tab" for="uc-r-collect">Collections</label>
    <label class="uc-tab" for="uc-r-payout">Payouts</label>
    <label class="uc-tab" for="uc-r-cards">Card issuing</label>
    <label class="uc-tab" for="uc-r-vas">Value-added services</label>
  </div>

  <div class="uc-panels">
    <div class="uc-panel" id="uc-collect">
      <div class="uc-info">
        <h3>Collections</h3>
        <p>Give each customer a permanent account number, or spin up a one-time account for a single checkout. Pila credits the wallet and fires a webhook the moment the transfer settles.</p>
        <div class="tags"><span>Dedicated NUBAN</span><span>One-time accounts</span><span>Deposit webhooks</span></div>
        <a class="uc-link" href="/api-reference/wallets/create-wallet">Start with wallets</a>
      </div>
      <div class="flow">
        <a class="flow-step" href="/api-reference/wallets/create-wallet"><span class="num">1</span><div class="t"><b>Create a wallet</b><span>Individual, corporate or one-time use account</span></div><span class="chip">Wallet</span></a>
        <a class="flow-step" href="/api-reference/webhooks/subscribe"><span class="num">2</span><div class="t"><b>Subscribe to webhooks</b><span>Get told the instant a deposit lands</span></div><span class="chip">Events</span></a>
        <a class="flow-step" href="/api-reference/core-concepts/webhook-signatures"><span class="num">3</span><div class="t"><b>Verify the signature</b><span>Check <code>x-pila-signature</code> before you trust a payload</span></div><span class="chip">Security</span></a>
        <a class="flow-step" href="/api-reference/wallets/wallet-details"><span class="num">4</span><div class="t"><b>Reconcile the balance</b><span>Read the wallet and its transaction history</span></div><span class="chip">Ledger</span></a>
      </div>
    </div>
    <div class="uc-panel" id="uc-payout">
      <div class="uc-info">
        <h3>Payouts</h3>
        <p>Confirm you are paying the right person, move the money, then follow the transaction to a terminal status. Works for single disbursements and scheduled payroll runs alike.</p>
        <div class="tags"><span>Payroll</span><span>Loan disbursement</span><span>Marketplace settlement</span></div>
        <a class="uc-link" href="/api-reference/wallets/transfer-funds">Start with transfers</a>
      </div>
      <div class="flow">
        <a class="flow-step" href="/api-reference/general-services/fetch-banks"><span class="num">1</span><div class="t"><b>Fetch bank codes</b><span>Resolve the recipient's institution code</span></div><span class="chip">Lookup</span></a>
        <a class="flow-step" href="/api-reference/general-services/resolve-nuban"><span class="num">2</span><div class="t"><b>Resolve the NUBAN</b><span>Confirm the account name before you send</span></div><span class="chip">Lookup</span></a>
        <a class="flow-step" href="/api-reference/wallets/transfer-funds"><span class="num">3</span><div class="t"><b>Transfer funds</b><span>Debit a wallet or your pool account</span></div><span class="chip">Payout</span></a>
        <a class="flow-step" href="/api-reference/wallets/transaction-details"><span class="num">4</span><div class="t"><b>Track the transaction</b><span>Poll or wait for the webhook to confirm</span></div><span class="chip">Ledger</span></a>
      </div>
    </div>
    <div class="uc-panel" id="uc-cards">
      <div class="uc-info">
        <h3>Card issuing</h3>
        <p>Issue a dollar card against a customer's identity, top it up from their NGN wallet, and keep control — freeze, unfreeze, sweep the balance back, or terminate it outright.</p>
        <div class="tags"><span>Online spend</span><span>Subscriptions</span><span>Spend controls</span></div>
        <a class="uc-link" href="/api-reference/cards/create-virtual-card">Start with cards</a>
      </div>
      <div class="flow">
        <a class="flow-step" href="/api-reference/cards/create-virtual-card"><span class="num">1</span><div class="t"><b>Create the card</b><span>Cardholder details plus BVN and an ID number</span></div><span class="chip">Issue</span></a>
        <a class="flow-step" href="/api-reference/cards/load-card"><span class="num">2</span><div class="t"><b>Load it</b><span>Fund the card from the linked NGN wallet</span></div><span class="chip">Fund</span></a>
        <a class="flow-step" href="/api-reference/webhooks/card-events"><span class="num">3</span><div class="t"><b>Listen for card events</b><span>Authorisations, declines, drains and refunds</span></div><span class="chip">Events</span></a>
        <a class="flow-step" href="/api-reference/cards/block-card"><span class="num">4</span><div class="t"><b>Control it</b><span>Block, unblock, withdraw or terminate</span></div><span class="chip">Lifecycle</span></a>
      </div>
    </div>
    <div class="uc-panel" id="uc-vas">
      <div class="uc-info">
        <h3>Value-added services</h3>
        <p>Sell airtime and data alongside your core product, and use the lookup endpoints to validate input before a customer ever sees an error.</p>
        <div class="tags"><span>Airtime &amp; data</span><span>Account lookup</span><span>Card BIN</span></div>
        <a class="uc-link" href="/api-reference/general-services/buy-airtime">Start with airtime</a>
      </div>
      <div class="flow">
        <a class="flow-step" href="/api-reference/general-services/buy-airtime"><span class="num">1</span><div class="t"><b>Buy airtime</b><span>Top up one or many numbers on any network</span></div><span class="chip">Purchase</span></a>
        <a class="flow-step" href="/api-reference/general-services/buy-data"><span class="num">2</span><div class="t"><b>Buy data</b><span>List the available plans, then buy one</span></div><span class="chip">Purchase</span></a>
        <a class="flow-step" href="/api-reference/cards/resolve-card-bin"><span class="num">3</span><div class="t"><b>Resolve a card BIN</b><span>Identify brand, type and issuing bank</span></div><span class="chip">Lookup</span></a>
        <a class="flow-step" href="/api-reference/general-services/states-lgas"><span class="num">4</span><div class="t"><b>Fetch states</b><span>Populate address forms from one source</span></div><span class="chip">Lookup</span></a>
      </div>
    </div>
  </div>
</div>
</div>
</section>

<section class="sec" id="dev">
<div class="wrap dev">
<div>
  <div class="sec-head reveal" style="margin-bottom:30px">
    <h2>Everything you need to ship</h2>
    <p>A full sandbox, a clear reference and webhooks you can trust — so your first successful transfer happens today, not next sprint.</p>
  </div>
  <div class="dev-tools">
    <a href="/api-reference/get-started/introduction" class="tool reveal"><div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6l-5 6 5 6M16 6l5 6-5 6"/></svg></div><h4>API Reference</h4><p>Every endpoint, parameter and response, with real examples.</p><span class="snip">POST /api/v1/wallet/ngn/create</span><span class="go">Browse endpoints <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/api-reference/get-started/authentication" class="tool reveal"><div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="10" width="16" height="11" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3"/></svg></div><h4>Authentication</h4><p>Pair your secret key with an AppId and you are live.</p><span class="snip">Authorization: &lt;secret_key&gt;</span><span class="go">Set up auth <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/api-reference/get-started/quickstart" class="tool reveal"><div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/></svg></div><h4>Quickstart</h4><p>From zero to a funded wallet in four calls.</p><span class="snip">curl https://sandbox.trypila.co</span><span class="go">Make your first call <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/api-reference/webhooks/subscribe" class="tool reveal"><div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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></div><h4>Webhooks</h4><p>Real-time events the moment money moves.</p><span class="snip">event: deposit</span><span class="go">Configure webhooks <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/api-reference/get-started/environments" class="tool reveal"><div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h16v12H4z"/><path d="M8 20h8M9 16v4M15 16v4"/><path d="M8 8l2 2-2 2"/></svg></div><h4>Sandbox</h4><p>Build against the same endpoints before you go live.</p><span class="snip">https://sandbox.trypila.co</span><span class="go">Try the sandbox <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/api-reference/core-concepts/response-format" class="tool reveal"><div class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7V5a2 2 0 0 1 2-2h2M16 3h2a2 2 0 0 1 2 2v2M20 17v2a2 2 0 0 1-2 2h-2M8 21H6a2 2 0 0 1-2-2v-2"/><path d="M8 12h8"/></svg></div><h4>Response format</h4><p>One envelope on every call, success or failure.</p><span class="snip">{ "entity": ... }</span><span class="go">Read the shape <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
  </div>
</div>

<div class="code-card reveal">
  <input class="code-radio" type="radio" name="lang" id="lang-curl" checked />
  <input class="code-radio" type="radio" name="lang" id="lang-node" />
  <input class="code-radio" type="radio" name="lang" id="lang-python" />
  <div class="code-top">
    <div class="dots"><i style="background:#736CEE"></i><i style="background:#F5A524"></i><i style="background:#2C9C7E"></i></div>
    <div class="code-langs">
      <label for="lang-curl">cURL</label>
      <label for="lang-node">Node</label>
      <label for="lang-python">Python</label>
    </div>
    <span class="copy"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/></svg>Copy</span>
  </div>
  <div class="code-body">
<pre data-lang="curl"><span class="tk-com"># Pay out to a Nigerian bank account</span>
curl <span class="tk-str">https://sandbox.trypila.co/api/v1/wallet/ngn/transfer</span> \\
-H <span class="tk-str">"Authorization: &lt;secret_key&gt;"</span> \\
-H <span class="tk-str">"AppId: &lt;app_id&gt;"</span> \\
-H <span class="tk-str">"Content-Type: application/json"</span> \\
-d <span class="tk-str">'{
    "wallet_id": "&lt;wallet_id&gt;",
    "amount": "5000",
    "recipient_bank_code": "058",
    "recipient_account_number": "0129531833",
    "source": "wallet"
  }'</span></pre>
<pre data-lang="node"><span class="tk-key">const</span> <span class="tk-var">res</span> = <span class="tk-key">await</span> <span class="tk-fn">fetch</span>(
<span class="tk-str">'https://sandbox.trypila.co/api/v1/wallet/ngn/transfer'</span>,
{
method: <span class="tk-str">'POST'</span>,
headers: {
  Authorization: process.env.<span class="tk-var">PILA_SECRET_KEY</span>,
  AppId: process.env.<span class="tk-var">PILA_APP_ID</span>,
  <span class="tk-str">'Content-Type'</span>: <span class="tk-str">'application/json'</span>,
},
body: <span class="tk-fn">JSON.stringify</span>({
  wallet_id: walletId,
  amount: <span class="tk-str">'5000'</span>,
  recipient_bank_code: <span class="tk-str">'058'</span>,
  recipient_account_number: <span class="tk-str">'0129531833'</span>,
  source: <span class="tk-str">'wallet'</span>,
}),
}
);</pre>
<pre data-lang="python"><span class="tk-key">import</span> os, httpx

<span class="tk-var">res</span> = httpx.<span class="tk-fn">post</span>(
<span class="tk-str">"https://sandbox.trypila.co/api/v1/wallet/ngn/transfer"</span>,
headers={
    <span class="tk-str">"Authorization"</span>: os.environ[<span class="tk-str">"PILA_SECRET_KEY"</span>],
    <span class="tk-str">"AppId"</span>: os.environ[<span class="tk-str">"PILA_APP_ID"</span>],
},
json={
    <span class="tk-str">"wallet_id"</span>: wallet_id,
    <span class="tk-str">"amount"</span>: <span class="tk-str">"5000"</span>,
    <span class="tk-str">"recipient_bank_code"</span>: <span class="tk-str">"058"</span>,
    <span class="tk-str">"recipient_account_number"</span>: <span class="tk-str">"0129531833"</span>,
    <span class="tk-str">"source"</span>: <span class="tk-str">"wallet"</span>,
},
timeout=<span class="tk-num">30</span>,
)</pre>
    <div class="resp"><span class="badge">200 OK</span><span>{ "transaction_status": "PROCESSING" }</span></div>
  </div>
</div>
</div>
</section>

<section class="sec" style="padding-top:8px">
<div class="wrap">
<div class="guides" id="guides">
  <div class="sec-head reveal" style="position:relative;z-index:2">
    <h2>Jump straight to the answer</h2>
    <p>Short, task-focused walkthroughs for the things teams do most.</p>
  </div>
  <div class="guide-grid">
    <a href="/dashboard-guide/getting-started/create-an-app" class="guide"><span class="gi" style="background:rgba(115,108,238,.24)"><svg viewBox="0 0 24 24" fill="none" stroke="#c4a7f7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="10" width="16" height="11" rx="2"/><path d="M8 10V7a4 4 0 0 1 8 0v3M12 14v3"/></svg></span><div><b>Get your API keys</b><span>Create an app and copy your credentials</span></div><span class="arw"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/dashboard-guide/getting-started/fund-your-wallet" class="guide"><span class="gi" style="background:rgba(245,165,36,.26)"><svg viewBox="0 0 24 24" fill="none" stroke="#F5A524" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="6" width="18" height="12" rx="2"/><circle cx="12" cy="12" r="2.5"/><path d="M6 12h.01M18 12h.01"/></svg></span><div><b>Fund your wallet</b><span>Top up so live payouts can settle</span></div><span class="arw"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/api-reference/core-concepts/webhook-signatures" class="guide"><span class="gi" style="background:rgba(44,156,126,.26)"><svg viewBox="0 0 24 24" fill="none" stroke="#6fd3b8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2l8 4v6c0 5-3.5 8-8 10-4.5-2-8-5-8-10V6z"/><path d="M9 12l2 2 4-4"/></svg></span><div><b>Verify a webhook</b><span>Check the signature before you trust a payload</span></div><span class="arw"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
    <a href="/dashboard-guide/home/overview" class="guide"><span class="gi" style="background:rgba(205,201,228,.2)"><svg viewBox="0 0 24 24" fill="none" stroke="#a9a3e8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><path d="M7 15l4-5 3 3 5-7"/></svg></span><div><b>Read the dashboard</b><span>Balances, collections and payouts at a glance</span></div><span class="arw"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span></a>
  </div>
  <div style="text-align:center;position:relative;z-index:2">
    <a href="/get-started" class="guides-more">Browse all guides <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
  </div>
</div>
</div>
</section>

<section class="cta-band" id="cta">
<div class="wrap">
<div class="cta-inner reveal">
  <div>
    <h2>Your first transfer is <em style="font-style:italic;color:#fff">minutes</em> away</h2>
    <p>Create an account, grab your sandbox keys, and move test money today. Switch the base URL when you are ready to go live.</p>
    <div class="cta-cta">
      <a href="https://dashboard.trypila.co/" target="_blank" rel="noopener" class="btn btn-white btn-arrow">Get API keys <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a>
      <a href="/api-reference/get-started/quickstart" class="btn btn-line">Read the docs</a>
    </div>
  </div>
</div>
</div>
</section>

<footer>
<div class="wrap">
<div class="foot-grid">
  <div class="foot-brand">
    <a href="https://trypila.co" class="logo"><img class="logo-img" src="/assets/pila-logo.svg" alt="Pila" width="48" height="26" style="filter:brightness(0) invert(1)" /></a>
    <p>Wallets, bank payouts and virtual USD cards for Nigerian businesses.</p>
  </div>
  <div class="foot-col"><h5>Products</h5><a href="/api-reference/wallets/create-wallet">Wallets</a><a href="/api-reference/wallets/transfer-funds">Payouts</a><a href="/api-reference/cards/create-virtual-card">Virtual USD cards</a><a href="/api-reference/general-services/resolve-nuban">General services</a></div>
  <div class="foot-col"><h5>Developers</h5><a href="/api-reference/get-started/quickstart">Quickstart</a><a href="/api-reference/get-started/authentication">Authentication</a><a href="/api-reference/webhooks/subscribe">Webhooks</a><a href="/api-reference/get-started/environments">Environments</a></div>
  <div class="foot-col"><h5>Company</h5><a href="https://trypila.co">Website</a><a href="/get-started">Guides</a><a href="/changelog/all_updates">Changelog</a><a href="/support">Support</a></div>
</div>
<div class="foot-bottom">
  <span>&copy; 2026 Pila.</span>
</div>
</div>
</footer>
` }}
/>


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