Wallets and deposits

Choose the recipe for receiving money: a stablecoin address on an EVM network, on Stellar or Solana, a balances screen, a missing deposit, what a bank deposit costs, and the webhooks that announce deposits.

These recipes cover money coming in, as stablecoins sent to a customer's wallet or as bank transfers into a customer's account. Use this page to pick the recipe for your case.

A money example to keep in mind. Ada withdraws 250 USDC from her exchange to her Gravv Polygon address. Gravv sees it arrive, sends inflow.onchain.completed, records a crypto_funding row of 250, and her wallet shows USDC 250.000000. If she had picked Ethereum in her exchange instead, Gravv would credit nothing, because it watches the address on Polygon only.

Wallet or account

Wallet Account
What it is A stablecoin address only A financial account, with bank details where the option has them
Receives Stablecoins from wallets and exchanges Bank transfers, and stablecoins on the account's own wallet
How you get one POST /v1/wallets, one wallet per call Through the account flows. See Accounts v2

Which recipe

Situation Status Recipe
USDC or USDT on Polygon, Ethereum or Avalanche Available Give a customer a stablecoin address on an EVM network
USDC on Stellar or Solana Available Receive USDC on Stellar or Solana
USDT on Solana or Stellar Not supported No recipe
Wallets on any other network Not supported No recipe
A "My balances" screen Available Show a customer their wallets and balances
"I sent 100 USDC and it is not there" Available Find a missing stablecoin deposit
A bank deposit into an account, and its fee Available Know what a bank deposit costs
Webhooks for deposits, and catching up on the ones your server missed Available Set up webhooks and catch up on missed events
Charging a payer by local bank transfer or card Not yet available in these recipes No recipe

Rules every recipe relies on

  • Every request goes to one host, https://api.gravv.xyz, with the Api-Key header. A grvSec_sandbox_ key creates test-network wallets. Any other key creates main-network wallets.
  • Every POST /v1/wallets needs its own new Idempotency-Key, and each new key creates a new wallet. Reuse a key only to retry after a timeout or a 5xx. After a 4xx, use a new key, because Gravv replays the 4xx under the old key for 24 hours.
  • Network values are lower case, such as polygon, never Polygon.
  • Always show the network next to an address. The same 0x… address exists on every EVM network, but Gravv watches only the wallet's own network.
  • inflow.onchain.* events carry status in upper case (COMPLETED, FAILED), unlike every other webhook. Deduplicate every webhook on the body's event_id, never on the X-Event-ID header.
  • Amounts and balances are decimal strings. Add them as decimals, never as floats.
Was this page helpful?