Build today. Take it to production.
Sandbox access today. No call, no contract.
From Sandbox to first payment
Build in Sandbox, then take the same flow live.
- Get a keyStart building in Sandbox.
- Build the flowTest the products your application needs.
- Go liveActivate production and move real funds.
One API, organised by product
Grouped by the product you are building, not by endpoint.
Customers
Create the individual or business every other object belongs to, and carry your own identifier on it.
- object
- Customer
- type
- individual
- external_id
- your own id
- verification
- hosted link or server to server
/v1/customers
Customers
Create the individual or business every other object belongs to, and carry your own identifier on it.
- object
- Customer
- type
- individual
- external_id
- your own id
- verification
- hosted link or server to server
/v1/customers
Accounts
Issue accounts to customers and businesses, in the currencies available to their programme.
- object
- Account
- customer_id
- cus_…
- currency
- USD
- details
- receiving details on the account
/v1/accounts
Payments
Create and track payments across supported destinations. The destination decides the rail, not a second integration.
- object
- Transfer
- amount
- 2,500.00
- source_currency
- USD
- destination
- external_account
- reference
- INV-4471
/v1/transfer
Collections
Take money in through the method that fits the payer, and settle it where you choose.
- object
- Collection
- amount
- 2,500.00
- currency
- EUR
- method
- bank_transfer
- settlement
- internal_account
/v1/collections
Cards
Issue virtual and physical cards against balances you already hold, and read their details back encrypted.
- object
- Card
- customer_id
- cus_…
- form
- virtual or physical
- funding
- the balance it draws on
/v1/cards
FX
Take a quote with its expiry, execute against it, and settle into the account or wallet you configured.
- object
- Quote
- pair
- USD / EUR
- rate
- the rate you were shown
- expires
- the moment it stops being valid
/v1/fx
Risk and eligibility
Check whether a customer qualifies for a product in their country, and activate it when they do.
- object
- Eligibility
- customer_id
- cus_…
- feature_id
- the product being activated
- requirements
- what is still outstanding
/v1/risk/features
Events
One envelope for every event on the platform, whichever product raised it.
- object
- Event
- event_id
- evt_…
- type
- the event that occurred
- created_at
- when it occurred
- data
- the object it happened to
Webhooks
The objects above show the shape of a request rather than a full schema. Every field named in them is documented; the reference carries the complete list.
Build in Sandbox. Go live when ready.
The same flow, before live funds and production controls.
Sandbox
- Test credentials
- Test balances
- Supported test flows
- No real funds
Production
- Production credentials
- Activated products
- Live funds
- Production controls and limits
Know what happened next
State and events keep your application in step with Gravv.
- pending
- completed
A payment that does not complete ends at failed, and the same event carries the reason.
These are the states a transfer and a collection move through, each one published as an event: transfer.status.pending, transfer.status.completed, transfer.status.failed.
POST to your endpoint
{
"event_id": "evt_…",
"type": "transfer.inflow.deposit_received",
"created_at": "…",
"data": { "…": "…" }
}What developers ask
Four answers, before you spend an afternoon finding out.
Can I start before talking to sales?
Yes. Start in Sandbox and build before production onboarding.
Is this one API or several integrations?
One platform and one developer model, across every product domain.
What changes when I go live?
Production adds live credentials, activated products, controls and real funds.
Where is pricing?
Agreed with the commercial team, based on the products and programme activated.