eCommerce, POS, and mobile

Gravity’s latest payment processing solutions are built to be fast, scalable, and easy to integrate.

Emergepay is the cloud-based multi-interface integration that’s simple, fast, and works with any OS or platform—which makes it capable of being run on almost anything that can access the internet.

  • 24/7 user support
  • Full-service integration
  • Dedicated relationship manager

Integrate directly with cloud-based devices

Clover Flex | Clover Mini | Castle MP200 | Vega 3000 | Vega 3000 Mobile

Enjoy all of these features out of the box:

Accept credit cards

Accept debit cards with PIN

ACH payments

Save card support

Text-to-Pay contactless payments

Recurring billing from saved card token

PCI compliance and data security

Apple Pay and Google Pay

Signature capture

If a cloud platform is not right for you… Our Windows based desktop solution, EI Server, is a battle-tested strong arm for developers big & small and supports a versatile selection of payment devices.

Why choose Gravity as your strategic development partner?

Because we’re a privately held company, our focus is always going to be on creating long-term relationships—not on squeezing our partners in order to maximize our quarterly earnings.

Developer making software integrations

We're on your side

  • Expert 24/7 human support. No robots
  • Devoted industry consultants who solve your clients’ unique challenges
  • Ongoing business-education opportunities

Know what you're paying for

  • Total visibility into payments
  • Never any hidden fees or nasty surprises
  • Non-commissioned sales reps

Designed for independent businesses

  • Services to grow businesses
  • State-of-the-art processing technology
  • Price parity on processing and POS integrations

Secure and simple—emergepay API

Our developers are constantly looking for–and creating–great API solutions.

The cloud-based emergepay API is simple to use and available in common languages like JavaScript, TypeScript, PHP, and C#. emergepay makes it simple to add a payment modal, payment window, or a set of fields embedded into your application or site.

//transactionType: "CreditSale"
//install the npm modules: 'npm install express cors emergepay-sdk'
var express = require("express");
var cors = require("cors");
var sdk = require("emergepay-sdk");

//Your private and secure creditials
var oid = "your_oid"; //Organization ID
var authToken = "your_authToken"; //Secretly generated specific to you org
var environmentUrl = "environment_url"; //Sandbox or Production environment
var emergepay = new sdk.emergepaySdk({ oid: oid, authToken: authToken, environmentUrl: environmentUrl });

var app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());

app.post("/start-transaction", function (req, res) {
    var amount = "0.01";
    var config = {
        transactionType: sdk.TransactionType.CreditSale,
        method: "modal",
        fields: [
            {
                id: "base_amount",
                value: amount
            },
            {
                id: "external_tran_id",
                value: emergepay.getExternalTransactionId()
            }
        ]
    };
  
    emergepay.startTransaction(config)
    .then(function (transactionToken) {
        res.send({
            transactionToken: transactionToken
        });
    })
    .catch(function (err) {
        res.send(err.message);
    });
});

console.log("listening on port 5555");
app.listen(5555);
//transactionType: "CreditSale"
//install the npm modules: 'npm install express cors emergepay-sdk
import * as express from "express";
import * as cors from "cors";
import {emergepaySdk, TransactionType} from "emergepay-sdk";

//Your private and secure creditials
const oid: string = "your_oid";
const authToken: string = "your_authToken";
const environmentUrl: string = "environment_url";
const emergepay: emergepaySdk = new emergepaySdk({oid, authToken, environmentUrl});

const app: any = express();

app.use(express.json());
app.use(express.urlencoded({extended:true}));
app.use(cors());

//The client side can hit this endpoint by issuing a POST request to
//localhost:5555/start-transaction
//base_amount and external_tran_id are required in the fields array.
app.post("/start-transaction", (req, res) => {
    const amount = "0.01";
    const config: any = {
        transactionType: TransactionType.CreditSale,
        method: "hostedFields",
        fields: [
            {
                id : "base_amount",
                value : amount
            },
            {
                id : "external_tran_id",
                value : emergepay.getExternalTransactionId()
            }
        ]
    };

    emergepay.startTransaction(config)
        .then(transactionToken => {
            res.send({
                transactionToken: transactionToken
            });
        })
        .catch(err => {
            res.send(err.message);
        });
});

console.log("listening on port 5555");
app.listen(5555);
//transactionType: "CreditSale"
 array(
    'transactionType' => 'CreditSale',
    'method' => 'hostedFields',
    'fields' => array(
      array('id' => 'base_amount', 'value' => '0.01'),
      array('id' => 'external_tran_id', 'value' => GUID())
    )
  )
);

//Configure the request
$request = curl_init($url);
curl_setopt($request, CURLOPT_HEADER, false);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Authorization: Bearer ' . $authToken));
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, json_encode($body));

//Issue the request and get the response
$response = curl_exec($request);
curl_close($request);

echo $response;

function GUID()
{
    if (function_exists('com_create_guid') === true)
    {
        return trim(com_create_guid(), '{}');
    }

    return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
?>
//transactionType: "CreditSale"
public async Task<object> StartTransactionAsync(StartTransactionModel config)
{
  var response = new object();

//Use your private and secure creditials
  const string OID = "your_oid";
  const string AUTH_TOKEN = "your_authToken";
  const string ENDPOINT_URL = "environment_url";

  string url = $"{ENDPOINT_URL}/orgs/{OID}/transactions/start";

  var contents = new
  {
    transactionData = new
    {
      transactionType = "CreditSale",
      method = "hostedFields",
      fields = new[]
      {
        new { id = "base_amount",           value = config.Amount },
        new { id = "external_tran_id",      value = Guid.NewGuid().ToString() },
        new { id = "billing_name",          value = config.BillingName },
        new { id = "billing_address",       value = config.BillingAddress },
        new { id = "billing_postal_code",   value = config.BillingPostalCode },
        new { id = "transaction_reference", value = config.TransactionReference },
        new { id = "cashier_id",            value = config.CashierId }
      }
    }
  };

  try
  {
    using (var client = new HttpClient())
    {
      var transactionJson = JsonConvert.SerializeObject(contents);

      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
      request.Headers.Add("Authorization", $"Bearer {AUTH_TOKEN}");
      request.Content = new StringContent(transactionJson, Encoding.UTF8, "application/json");

      var httpResponse = await client.SendAsync(request);
      var data = await httpResponse.Content.ReadAsStringAsync();
      response = JsonConvert.DeserializeObject(data);
    }
  }
  catch (Exception exc)
  {
    throw exc;
  }

  return response;
}

Get started now

Complete the form below...

  • This field is for validation purposes and should be left unchanged.

...or schedule a call.

Call us now at 866-701-4700 x467. Or schedule a time for one of our consultants call you.

Schedule it now