Create a wallet
Open a new end-user wallet under your organization, with optional inline KYC.
/v1/walletsOpens a new end-user wallet under your organization. You may submit KYC inline at
creation time, or later via submit KYC. The wallet's email
is unique within your org and environment.
POST /walletsscope: walletTest keys only. Never paste a live key. Your key is stored only in this browser (localStorage) and sent only to the same-origin playground proxy.
›Equivalent request (curl / TypeScript)
curl -X POST https://sandbox.api.acute.network/v1/wallets \
-H "Authorization: Bearer acuinf_test_…" \
-H "Content-Type: application/json" \
-d '{"email":"ada@example.com","fullName":"Ada Lovelace","externalReference":"cust_8842"}'const res = await fetch("https://sandbox.api.acute.network/v1/wallets", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ACUTE_TEST_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"email":"ada@example.com","fullName":"Ada Lovelace","externalReference":"cust_8842"}),
});
const { data, meta } = await res.json();# create an end-user wallet
curl -X POST https://sandbox.api.acute.network/v1/wallets \
-H "Authorization: Bearer acuinf_test_…" \
-H "Content-Type: application/json" \
-d '{
"email": "ada@example.com",
"fullName": "Ada Lovelace",
"externalReference": "cust_8842"
}'{
"success": true,
"statusCode": 201,
"data": {
"id": "acuinf483920175566wlt",
"kind": "end_user",
"email": "ada@example.com",
"fullName": "Ada Lovelace",
"phone": null,
"externalReference": "cust_8842",
"kycStatus": "none",
"status": "active",
"currency": "NGN",
"createdAt": "2026-06-24T09:14:02.118Z"
},
"meta": { "requestId": "req_4f9c2a7e1b0d8c3a5e6f10a2" }
}emailstringbodyrequiredThe end user's email. Must be a valid email and unique within your organization; a duplicate
returns 409 (WALLET_EMAIL_TAKEN).
fullNamestringbodyoptionalThe end user's full name.
phonestringbodyoptionalThe end user's phone number.
externalReferencestringbodyoptionalYour own correlation id for this customer. Stored and echoed back on every wallet response.
kycWalletKycPayloadbodyoptionalOptional inline KYC. If present, the wallet is created at tier1. Same shape as the submit
KYC body: bvn (11 digits), dateOfBirth (YYYY-MM-DD), gender, phone,
addressLine1, city, state, plus optional addressLine2, country, postalCode.
WalletResponseData.
idstringrequiredThe wallet reference (acuinf…wlt). Store this; it's how you address the wallet.
kind'settlement' | 'end_user'requiredAlways end_user from the public API.
emailstringrequiredThe end user's email.
fullNamestring | nullrequiredThe name, or null if not provided.
phonestring | nullrequiredThe phone, or null.
externalReferencestring | nullrequiredYour correlation id, or null.
kycStatus'none' | 'tier1'requiredtier1 if KYC was submitted (inline or later), else none.
status'active' | 'frozen' | 'closed'requiredNew wallets start active.
currencystringrequiredThe wallet currency (NGN).
createdAtstringrequiredISO-8601 creation timestamp.