Getting started with Vibrant sandbox

The API is documented using Swagger, try it out here REST API documentation.


The sandbox is for playing around and testing your integration with Vibrant APIs before going to production.

No matter if you are integrating a POS to App or App Switch solution the flow is the same.

You can read more details about the solutions here POS to App, App Switch.

Get Access

Not in contact with Vibrant yet? Reach out to our partner and integration team at

We will create a partner account for you to get started.

We will ship you an API key, user credentials and terminal Id of your first user and terminal to test with.

The API key is needed to perform all requests to our API.

You can create more users and API keys if needed through our partner dashboard. It is also possible to reset the user passwords or delete an API key.

If you create a new API key - remember to save the API key after creating it - it will only be shown once.

Sandbox dashboard link:

Setup a device to be a terminal

To be able to make payments through our API - an Android device should be setup to become a Vibrant terminal.

We currently support Android devices version 9 or higher.

Download the Vibrant sandbox app on an Android device.

Download link - (if you do not have access, let us know).

Open the Vibrant sandbox app and login with the credentials of a user - just start by the one we created for you.

After login you will be able to select between terminals available - first time there will be only one item in the list with the terminal name we created for you.

Now the app is ready and waiting for payment requests.

Need more terminals?

If you need more terminals/devices to test with it is possible to create more terminals through the API.

Here is a example of how to create a terminal.

There is a default limit to the number of terminals a new account can create, please contact us at if need more terminals.

curl -X 'POST' \
  '' \
  -H 'accept: application/json' \
  -H 'apikey: vibrant_pos.YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Front Desk",
  "descriptor": "Front desk vibrant terminal",
  "mode": "terminal",
  "virtual": false

Mode: This terminal needs to be created in what we call 'terminal' mode. We also have a mode called 'pos' mode - but this is for Mobile POS, i.e. when our app is used for payments created from within the app.

Virtual: It is possible to play with the API even without having a terminal device. By setting "virtual": true the API will simulate that payments succeed when you request a payment - even without an Android device involved.

Do your first payment

Send a payment intent to a terminal, as in this example.

More information about the data flow during payments can be found on this page: Payment flow.

curl -X 'POST' \
  '' \
  -H 'accept: application/json' \
  -H 'apikey: vibrant_pos.YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "paymentIntent": {
    "amount": 9999,
    "description": "Payment intent that will go to a terminal",

Tap your card

To test a transaction you need a test credit card.

You can turn a mobile device into a test credit card by downloading the Visa CDET app from google play store. It also allows you to test different card.

It is possible to order physical test cards. Contact Vibrant if we should help you get hold of some test credit cards.

App switch?

If you are using App switch - meaning you want the Vibrant app to take over on the same device as your own POS app - you can navigate the the Vibrant app by a simple link - like in this example:

<AppButton href="vibrantio://a2a?callbackUrl=">
	Open Vibrant App

You should do this after you have sent the process_payment_intent command to our backend.

Retrieve events

All state changes in our system will create a new event.

This also applies to state changes during payments.

There are two ways to get Vibrant events.

1) Webhooks

Get events by subscribing to specific event types. The post request below subscribes to payment_intent.succeeded events.

Read more about webhooks here: Webhooks

curl -X 'POST' \
  '' \
  -H 'accept: application/json' \
  -H 'apikey: vibrant_pos.YOUR_SECRET_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "enabledEvents": [   
  "description": "My PI succeeded webhook",
  "url": "",
  "status": "enabled"

Find all event types in the API documentation under create webhook: REST API documentation.

2) Pull by id

It is also possible to pull data from our endpoints. For instance pull a payment intent by id once every second to see when it changes status to succeeded.

The get request below fetches a payment intent by id.

curl -X 'GET' \
  '' \
  -H 'accept: application/json' \
  -H 'apikey: vibrant_pos.YOUR_SECRET_KEY'

Retrieve more data

For all types of objects it is possible to retrieve lists af data.

The lists can be filtered based on created time or other search criteria depending on the object type.

Try it out: REST API search charges.

Last updated