- Auto-onramp โ a fiat credential on a crypto wallet. The payer sends fiat; the wallet is credited in crypto.
- Auto-offramp โ a crypto credential on a fiat wallet. The payer sends crypto; the wallet is credited in fiat.
Create a cross-currency credential
Pass an explicitcurrency on POST /v1/wallets/:id/credentials that is different from the walletโs currency. Currency codes are uppercase (NGN, USDC, GHS, USDT, KES, โฆ).
network is validated against the credentialโs own currency, not the walletโs. So an NGN credential uses bank; a USDC credential uses base / ethereum / solana.
Eligibility
Cross-currency is admitted only when every condition below holds. Any failure returns a400 with invalid_input.
- The pair must be crypto โ fiat. Crypto โ crypto and fiat โ fiat are rejected.
- Both currencies must advertise the matching direction capability:
- Auto-onramp requires
canOnrampon the credential currency AND on the wallet currency. - Auto-offramp requires
canOfframpon both.
- Auto-onramp requires
- The credential currency must resolve to a supported currency row. An unknown code returns
404not_found.
The set of currencies that support
canOnramp / canOfframp is fixed by GlobalStack. If your walletโs currency isnโt eligible for a given direction, cross-currency provisioning will fail โ reach out to support to confirm coverage.Deposit lifecycle
Cross-currency deposits skip thedeposit.* topics entirely. The first webhook you receive is conversion.created (or conversion.funds_received โ whichever the FX pipeline emits first for the run); the deposit terminals via the conversion.* topics:
Same-currency credentials keep the original lifecycle across the
deposit.* topics โ deposit.received on arrival, then deposit.held if a tier gate applies, then deposit.confirmed when the credit settles (or deposit.failed if it doesnโt). Cross-currency credentials never fire any deposit.* topic.
Rate is locked at deposit time. The
destination_amount you see on conversion.success reflects the rate as of the depositโs arrival, not the rate as of the auto-conversion attempt.Fees
Auto-conversion fees follow the FX conversion contract: the destination amount is net of fees, and the fee breakdown is on theconversion.* webhook payloads. See failure reasons for the codes surfaced on a failed conversion.
Recovery on failure
Ifconversion.failed (or conversion.returned) fires, funds stay on the credentialโs own balance โ no auto-retry (FX failures are typically structural, not transient). Contact GlobalStack support to drain the parked funds; ops will run a fresh conversion at the then-current rate. Once the drain lands, the wallet balance is credited and the credential balance clears.