Zernio
APIFor you
Zernio
APIFor you
API Reference

Treasury

List payeesGETList top-upsGETList transfersGETCreate a payee onboarding linkPOSTCreate a top-upPOSTCreate a transferPOSTGet balanceGETGet a payout batchGETGet a top-up receiptGETGet a transferGETCancel an unpaid payout batchPOST
Dashboard
OverviewPlatformsAPI ReferenceResources
Treasury

Create a top-up

Starts a Stripe Checkout session to fund your balance by card. Card top-ups pay Stripe's processing fee and become available after 7 days. Bank transfers are not available yet; method: bank_transfer returns 400. Needs an owner, admin or billing admin, signed in or through a full-access key they created.


POST
/v1/balance/top-ups

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Header Parameters

Idempotency-Key?string

Optional client-generated unique key (e.g. a UUID) that makes retries safe. Same key + same body replays the original response; same key + different body → 422; key still processing → 409. A request cut off mid-handler (for example by a function timeout) can leave its key in progress, answering 409 until the key expires after 24 hours.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.treasury.createTopup({  body: {    amountCents: 1000,    method: 'card',  },});console.log(data);
{  "topupId": "string",  "url": "http://example.com"}
Was this page helpful?

Create a payee onboarding link

Returns a Stripe-hosted link where the payee completes identity and bank details so they can receive payouts.

Create a transfer

Moves money from your balance to a payee. The payee receives the full `amountCents`; Zernio's fee (4%, 50 cent minimum) is added on top, so your balance is debited `totalCents` = `amountCents` + `feeCents`. Returns 402 when the balance does not cover the amount plus the fee, or when it is negative after a dispute or refund of a card top-up ("Your balance is negative after a dispute or refund of a card top-up. Add funds to cover it before sending transfers."), and 409 when the payee has not finished onboarding or the Idempotency-Key is still processing. Needs an owner, admin or billing admin, signed in or through a full-access key they created: a profile-scoped key answers 403. A same-key retry never makes the transfer twice within Stripe's 24-hour idempotency window and answers 409 while another request is still waiting on Stripe for it; a transfer Stripe has not confirmed after 24 hours answers 409 until the daily reconciliation marks it paid (Stripe made it) or failed (it did not).

amountCents*integer

Amount in cents, minimum $10

Range1000 <= value <= 10000000
method*string

Only card is available. bank_transfer returns 400 "Bank transfers are not available yet."

Value in

  • "card"
  • "bank_transfer"