Skip to main content
The Reporting API lets your server read the Blink deposits flowing into your platform and look up the users behind them. Two read-only, paginated endpoints:
  • GET /v1/merchant-users — your Blink users, with each user’s total deposited and the embedded wallets they used. Look a user up by their embedded wallet to answer “has this user deposited with Blink before?”
  • GET /v1/merchant-deposits — individual deposits, filterable by user, status, chain, and date range.
Both are scoped entirely to your merchant account and return only the data you need to reconcile deposits — never the source wallet a user paid from, nor any personally identifying information.
On the testnet sandbox? Swap the host for https://api-sandbox.blink.cash.

Authentication

Every request is authenticated with a signed X-Merchant-Authorization header — the same identity credential used across the server-to-server API. See Merchant Authentication for how to build it.

Typical flow

The two endpoints compose. To check whether a returning user has deposited before and then pull their history:
1

Look the user up by their embedded wallet

GET /v1/merchant-users?embeddedWalletAddress=0x1a5F…&chainId=8453. An empty items array means they have never deposited to you. A hit returns their userId and total deposited.
2

Pull that user's deposits

Take the userId from step 1 and call GET /v1/merchant-deposits?userId=<userId>.
The userId is an opaque Blink-internal identifier — stable for a given user, safe to store, and the join key between the two endpoints.

Pagination

Both endpoints are cursor-paginated. Each response includes a nextCursor:
  • If nextCursor is a string, pass it back as ?cursor=<nextCursor> to fetch the next page.
  • If nextCursor is null, you have reached the last page.
Use limit (1–100, default 25) to set the page size. Treat the cursor as opaque — don’t parse or construct it. Deposits are returned newest-first; users are returned in a stable order suitable for walking the full list.
GET https://api.blink.cash/v1/merchant-users Lists the users who have deposited to you, each with their total completed deposits and the distinct embedded wallets they deposited into. Supply embeddedWalletAddress (optionally narrowed by chainId) to return only the user owning that wallet.

Query parameters

Response

amounts holds bucketed totals: total (all statuses, gross intended) and completed (money actually received). More status facets (for example a pending breakdown) can be added later without a breaking change.

List deposits

GET https://api.blink.cash/v1/merchant-deposits Lists individual deposits into your platform, newest first.

Query parameters

Response

Status is normalized. Every in-flight state reports as pending; a settled deposit is completed; a failed or expired one is failed.

Response codes

Error shape

Errors use the standard Blink error envelope: