NAV Navbar

Introduction

Welcome to the Ceevo API. This API provides four major functions.

  1. Payment - can be used to accept almost any type of payment.
  2. Issuing - for creating and managing virtual cards.
  3. KYC - Identiity verification based on uploading documents.
  4. Corporate module - for issuing virtual Visa cards used for sourcing or payment to vendors

Getting Started

Sign up an account by clicking the link on the left. You will retrieve the necessary information to use the Ceevo API.

Authentication

Ceevo uses a mix of authentication mechanisms to verify your API requests with your account’s API key or Client Credentials. If you do not include authentication key when making an API request, or use one that is incorrect or outdated, Ceevo returns an error.

Each account has two separate authentication keys; one for testing, and one for live transactions. All API requests exist in either test or live modes. These modes are separate from each other, meaning objects in one mode cannot be manipulated in the other.

Two types of authentication keys: APIKey and Client Credentials. APIKey is available for the Payment API only. For the Issuing and KYC APIs please use Client Credentials.

API requests must include an APIKey in a header, see example below:

X-CV-APIKey: xxxxxx-xxxx-xxxx-xxxx

Client Credentials should not be sent in API requests as only access token is required. To authenticate an API call, access token must be included in the HTTP header.

Access token can be obtained from the Ceevo authorisation server, see example below:


 POST /auth/realms/ceevo-realm/protocol/openid-connect/token HTTP/1.1
 Host: auth.ceevo.com

 grant_type=client_credentials
 &client_id=xxxxxxxxxx
 &client_secret=xxxxxxxxxx

Once authentication is successful, access token, token expiry, and other OAuth2 data will be available in the API response body. This access token must be included in the HTTP header of all subsequence API calls, see example below:

Authorization: Bearer access_token

Each account has a total of four authentication keys: APIKey (live mode), APIKey (test mode), Client Credential (live mode), and Client Credential (test mode).

Authentication keys can be found under "Integration" in the Ceevo Dashboard (Dashboard > Integration).

Payment

This guide shows you how to start accepting online payments with Ceevo and is in three sections; plugins, payment widget, and RESTful API. Use the links below to navigate to each respective section.

Payment Methods

Ceevo supports most payment methods. These include credit/debit cards (Mastercard/Visa) and popular alternative payment methods (APMs), such as Ideal and Sofort.

Supported payment methods can be found under "Payment Methods" in your account (Dashboard > Settings > Payment settings).

Payment Essential

Online payment can be segmented into two distinct categories:

Customer-Initiated Transactions (CIT)

A customer who places an order at an online store and confirms payment; this is an example of a typical Customer-Initiated Transactions (CIT).

In the CIT scenario, a customer is actively involved in the payment process. For such transactions, it is recommended to authenticate the customer with the payment scheme. This is to minimize risk and to stay compliant with the regulatory requirement (i.e. Strong Customer Authentication - SCA / PSD2).

Merchant-Initiated Transactions (MIT)

Certain business models charge customers after services are rendered, or take bill customers on a subscription basis; these are examples of Merchant-Initiated Transactions (MIT).

In the MIT scenario, the customer is absent from the payment process, with the transaction utilising stored customer payment details. Securing customer payment data is becoming more and more of a challenge and requires frequent operation to keep customer payment data up-to-date.

Payment Widget SDK

Overview

The Payment Widget SDK is our library for collecting sensitive payment information directly from your customers.

Customer payment details collected using the Payment Widget SDK, such as card or bank account information, can be tokenised. This information can be stored in a customer object for later use via the charge API.

Customer payment details are converted into an account token. These details are appended to the payment form once the customer confirms their action at checkout.

Because all sensitive information is handled by the Payment Widget SDK, it features simple PCI compliance with SAQ A reporting.

The Payment Widget SDK is designed to be embedded into your payment form. Integration of the payment widget is as follows:

Testing

There are several card numbers with which to complete test payments.

Card Type Card Number Password
Visa 3DS 4711100000000000 First#1234
Visa N3D 4200000000000000
MasterCard 3DS 5212345678901234 First#1234
MasterCard N3D 5454545454545454

Where no password is indicted, a password is not required.

Web Setup

Minimum HTML required:


<form id="paymentForm" action="./proccessPayment.html">
  <button type="submit">Tokenise</button>
</form>

Include the following script on your payment page. This script must be loaded directly from sdk.ceevo.com.

In order to remain PCI compliant, hosting your own copy is not permitted.

The Payment Widget SDK can be setup by loading it from sdk.ceevo.com


<script src="https://sdk.ceevo.com/ceevo.js"></script>

Certain parameters are required to activate the Payment Widget SDK, these are:

Parameter type Description Optional Example
apiKey string APIKey of your account No 136656b7-0d33-406d-9702-e4f09fa0736fTEST
formId string Name of the payment form with leading hash No #paymentForm
lang string Display Language No en
renderWidget bool toggle control No false
envMode string Mode of environment, TEST or LIVE No TEST
receiveTokensEvent bool Override the forms default behaviour. Yes true

The receiveTokensEvent parameter will override the form's default behaviour. Instead, an event listener will need to be added to the form to catch the receiveTokens custom event. After tokenizing this event will be triggered, if the tokenize was successful you can get your token data from the event's detail object. E.g:


event.detail = {
  card_country_code: "840"
  card_expiry_month: 12
  card_expiry_year: 2023
  card_last4: "1234"
  card_scheme: "Mastercard"
  card_token: "99f223d2-7858-4469-a90c-8ba8ae79878f"
  method_code: "CARDS"
  session_id: "b10589b0-e6c8-40bf-8cdb-629cb3b9ae57"
};

If the receiveTokensEvent parameter is not set or set to false, the form will require a method and action HTML attribute and a processing end point (eg: /sendPayment.php), it will submit as usual and the data will be appended to the URL when the page redirects. E.g:


http:example.com/sendPayment.php?
  card_token=          99f223d2-7858-4469-a90c-8ba8ae79878f&
  card_last4=          1234&
  card_scheme=         Mastercard&
  card_country_code=   840&
  card_expiry_year=    2023&
  card_expiry_month=   12&
  session_id=          46f97a8a-d5c8-4c01-a51b-924652136524&
  method_code=         CARDS

Once parameters are set, activate the Payment Widget SDK with the following JavaScript example:


const apiKey = '{YOUR_API_KEY}';
const formId = '#paymentForm';
const lang = 'en';
const renderWidget = false;
const envMode = 'TEST';
const receiveTokensEvent = true; // Optional

let ceevoPayment = new CeevoPayment(apiKey, formId, { lang, renderWidget, envMode, receiveTokensEvent });

Before activating the Payment Widget SDK, you can assign an error callback to a DIV element for error display and handling.


ceevoPayment.addErrorCallBack(err => console.log(err));

Once all parameters have been set, include the Payment Widget SDK in your payment form.


let elements = ceevoPayment.elements();
let card = elements.card();

card.renderTo('#widget_div');

Payment Widget SDK


ceevoPayment.getSessionId().then(result => {
  console.log('Session ID ::', result);
  // result will include your session_id
  // This will predominantly be used if you store the card token for future use.
  // Please remember that storing card information such as the full card number or CVV number is not permitted in most countries for security reasons.
});

let form = document.querySelector('#paymentForm');

form.addEventListener('receiveTokens', e => { 
  e.preventDefault;
  console.log('Card Token ::', e.detail);
});

Android Setup

Add dependency

Add the following to the app level gradle


implementation 'com.ceevo.android:sdk:0.0.9' // update the version number to the latest sdk version

Add the following line to the project level gradle under repositories


maven { url 'https://dl.bintray.com/devfortblox/sdk'}

Usage

Sample Code


package com.ceevo.android;

import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import com.ceevo.android.android.R;
import com.ceevo.android.sdk.Ceevo;
import com.ceevo.android.sdk.api.card.CeevoCardApi;
import com.ceevo.android.sdk.api.card.models.response.CeevoCardErrorMessage;
import com.ceevo.android.sdk.api.card.models.response.CeevoCardToken;
import com.ceevo.android.sdk.listeners.CeevoInitializationListener;
import com.ceevo.android.sdk.ui.CeevoCardFormDialog;
import com.ceevo.android.sdk.utils.CardUtils;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

public class MainActivity extends AppCompatActivity implements CeevoCardApi.CeevoCardTokeniseListener {
  private TextView tv_card_number;
  private TextView tv_card_name;
  private ImageView iv_card_logo;

  private CeevoInitializationListener listener = new CeevoInitializationListener() {
    @Override
    public void onSuccess() {
      Toast.makeText(MainActivity.this, "Got Merchant Profile!", Toast.LENGTH_LONG).show();
      String USER_ID = "SOME_USER_ID_123456";
      Ceevo.setUserId(USER_ID); // user id has to be set as soon as your application receives one and after the SDK is initialized (ie: after the user signs in)
    }

    @Override
    public void onFailure(String errorMessage) {
      Toast.makeText(MainActivity.this, "Failed to get Merchant! " + errorMessage, Toast.LENGTH_LONG).show();
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    String API_KEY = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX";

    Ceevo.init(MainActivity.this, API_KEY, listener); // call this once in main activity

    FloatingActionButton fab = findViewById(R.id.fab);
    tv_card_number = findViewById(R.id.tv_card_number);
    tv_card_name = findViewById(R.id.tv_card_name);
    iv_card_logo = findViewById(R.id.iv_logo);

    fab.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {

        boolean sdkInitialised = Ceevo.isInitialised(); // call this method to get initialization state

        if (!sdkInitialised) {
          Toast.makeText(MainActivity.this, "Fatal error!", Toast.LENGTH_SHORT).show();
          return;
        }

        CeevoCardFormDialog dialog = new CeevoCardFormDialog(MainActivity.this, MainActivity.this);

        // customize submit button background colour
        dialog.setSubmitButtonBackgroundColor(R.color.colorAccent);
        dialog.setSubmitButtonBackgroundDrawable(getDrawable(R.drawable.drawable));
        dialog.setSubmitButtonTextColor(R.color.design_default_color_primary);
        dialog.setSubmitButtonText("Submit");

        // dialog.show() returns false if the SDK is not initialized or if Ceevo.isInitialised() failed
        if (!dialog.show()) {
          Toast.makeText(MainActivity.this, R.string.fatal_error, Toast.LENGTH_LONG).show();
        }

        // use either or both LiveData and CeevoCardApi.CeevoCardTokeniseListener can be used to get the tokenise response
        dialog.getRequestFailedLiveData().observe(MainActivity.this, new Observer<CeevoCardErrorMessage>() {
          @Override
          public void onChanged(CeevoCardErrorMessage ceevoCardErrorMessage) {
            Log.d("MainActivity", "from LiveData: " + ceevoCardErrorMessage.toString());
          }
        });

        dialog.getRequestSucceededLiveData().observe(MainActivity.this, new Observer<CeevoCardToken>() {
          @Override
          public void onChanged(CeevoCardToken ceevoCardToken) {
            Log.d("MainActivity", "from LiveData: " + ceevoCardToken.toString());
          }
        });
      }
    });
  }

  // CeevoCardApi.CeevoCardTokeniseListener callbacks
  @Override
  public void onTokeniseSucceeded(CeevoCardToken cardToken) {
    Log.d("ceevo result", cardToken.toString());
    tv_card_number.setText("**** **** **** " + cardToken.getLastFour());
    tv_card_name.setText(cardToken.getScheme());
    iv_card_logo.setImageDrawable(CardUtils.getDrawableByName(cardToken.getScheme()));
  }

  @Override
  public void onTokeniseFailed(CeevoCardErrorMessage errorMessage) {
    Log.d("ceevo result failure", errorMessage.toString());
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will automatically handle clicks on
    // the Home/Up button, so long as parent activity is specified in AndroidManifest.xml
    int id = item.getItemId();

    if (id == R.id.action_settings) {
      return true;
    }

    return super.onOptionsItemSelected(item);
  }

  @Override
  protected void onResume() {
    super.onResume();
    Ceevo.resume(this); // add this to your activities
  }

  @Override
  protected void onPause() {
    super.onPause();
    Ceevo.pause(); // add this to your activities
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    Ceevo.close(); // add this to your activities
  }
}

IOS Setup

Prerequisites

Install the Ceevo Sift SDK as a dependency. The Sift SDK provides fraud detection feature while the user is using the application.

Sift

The Ceevo SDK is supported on devices running iOS version 10.0 and above.

Installation

As a binary

The sdk is published in multiple architectures. The version release compressed directory is composed of three directories. There is an Arm directory with Armv7 and Arm64 binaries. The x86_x64 directory has i386 and x64 binaries, and the other Fat directory has a fat binary for all the mentioned architectures.

Download the SDK from the releases directory.

Releases\1.0.0.zip

Select the intended architecture for the application. In case where support for all architectures is not required, the lipo tool can be used to strip unwanted architectures when submitting to the App Store. There are a few methods of stripping of architectures available. As an example we will use extract:


lipo ./CBVPaySDK.framework/CBVPaySDK  -extract armv7 -output ./thin/CBVPaySDK.framework/CBVPaySDK
lipo -info ./thin/CBVPaySDK.framework/CBVPaySDK

Architectures in the fat file: ./thin/CBVPaySDK.framework/CBVPaySDK are: armv7

The resulting framework file can then be embedded/linked to the application target.

CocoaPods

The CeevoPaySDK is available through CocoaPods. To install it, simply add the following line to your Podfile:


pod "CeevoPaySDK"

Run pod install from the PodFile directory and the Ceevo SDK will be available for use in the application project.

Usage

The CBVPaySDK.framework is added to the XCode project as a regular file in any location the user sees fit. XCode requires the framework to be linked via Build Phases / Link Binary With Libraries for the specific application target.

Initialization


  import CBVPaySDK
  ...
  CBVPayment.shared.setClientAuth(key: "ClientAuthKey") { error in
    if error != nil {
      print("CBVPAySDK: \(error?.localizedDescription ?? "An an error occured while initialising.")")
    } else {
      print("CBVPAySDK: initialised")
    }
  }

Once the framework is initialised, the user can then be able to capture the payment card from anywhere they need to.

Capturing The Card


  import CBVPaySDK
  ...
  CBVCardCaptureViewController.presentOnViewController(viewController: self, delegate: self)

  // CBVCardCaptureProtocol
  func capturingDidFail(viewController: CBVCardCaptureViewController, error: Error) { ... }

  func didPresent(viewController: CBVCardCaptureViewController) { ... }

  func capturingDidFinish(viewController: CBVCardCaptureViewController, tokenisedCard: [String : Any]) {
    let accountToken:String? = tokenisedCard["card_token"] as? String
    let scheme:String? = tokenisedCard["card_scheme"] as? String
    let lastFour:String? = tokenisedCard["last_four"] as? String
    let expiryMonth:String? = "\(tokenisedCard["expiry_month"] ?? "")"
    let expiryYear:String? = "\(tokenisedCard["expiry_year"] ?? "")"

    if accountToken != nil && scheme != nil && lastFour != nil {
      let creditCard:CreditCard? = ...
      creditCard?.brand = scheme
      creditCard?.expYear = expiryYear
      creditCard?.expMonth = expiryMonth
      creditCard?.lastFour = lastFour
      creditCard?.accountToken = accountToken
      ...
      let formartedData = CBVCardCaptureViewController.formartedData(scheme: scheme!, lastFour: lastFour!)

      self.cardView.name.text = creditCard?.brand
      self.cardView.brand.image = formartedData.logo
      self.cardView.number.text = formartedData.secureCardNumber
      ...
    }
  }

Resulting Tokens

Once the customer has checked out, collected account details are verified and processed by Ceevo. The following data is returned and appended to the payment form automatically.

Name Description Example
card_token Account Token 99f223d2-7858-4469-a90c-8ba8ae79878f
card_last4 Last four digits of card 1234
card_scheme Payment networks linked to card Mastercard
card_country_code Country payment was made in 840
card_expiry_year Card expiry year 2023
card_expiry_month Card expiry month 12
session_id Operation Session Id 46f97a8a-d5c8-4c01-a51b-924652136524
method_code Payment method CARDS

These tokens, along with other payment form data, are sent to your server. Both tokens are required when calling the Charge API. This will be covered in the following section.

Payment API Integration Guide

Use Ceevo's API and your server-side code to process payments. Ceevo API uses REST technology and JSON for data exchange.

Content-Type: application/json

The above HTTP header is required when calling the Ceevo API from your server-side code.

Ceevo API support Customer-Initiated Transactions (CIT), where a customer is present and makes a transaction; i.e. online checkout. It is recommended to enable 3DSecure for such transactions. Ceevo supports versions 3DS 1.0 and 3DS 2.0.

The Ceevo API supports Merchant-Initiated Transactions (MIT) where payment is processed when customer is absent from the transaction flow. Subscription and other recurring billing are examples of MIT.

Customer and Account Token

Once your customer’s account details have been collected and tokenized using the Payment Widget SDK, you can store the account token for later use.

To store an account token, following these steps:

Create Customer in Ceevo


POST /customer HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "billing": {
    "street": "50 Colorado Way",
    "zip": "HR3 4EX",
    "country": "GB"
  },
  "email": "[email protected]",
  "firstName": "Nicholas",
  "lastName": "Curtis",
  "mobile": "07789695310"
}

Unique ID of a customer can be found in the HTTP response.


HTTP/1.1 201 Created
Location: http://api.ceevo.com/customer/34bad767-345e-4da4-a7f8-addfgfdf3dbe5

Register Customer with Account Token

Linking a Customer with an Account Token requires one API call. In addition to payment details, you can store and verify provided customer address information with the payment card attribute by setting the verify parameter to true.


POST /customer/34bad767-345e-4da4-a7f8-addfgfdf3dbe5 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "accountToken": "78103004-fa5c-42ab-9d6c-50592e0ffd36",
  "default": true,
  "verify": true
}

Status of registration, along with verification result, can be found in the HTTP response.


HTTP/1.1 200 Ok
{
  "customerId": "34bad767-345e-4da4-a7f8-addfgfdf3dbe5",
  "accountToken": "78103004-fa5c-42ab-9d6c-50592e0ffd36",
  "cvvMatch": false,
  "addressMatch": true
}

CIT Payment

Once your customer’s payment details are collected and tokenized using the Payment Widget SDK, you can charge the card immediately.

Unlike Payment Widget SDK which runs in the browser, payment attempts are made from your server.

Follow the steps below to process CIT with 3DSecure Authentication:

Send Payment to /charge API

 POST /charge HTTP/1.1
 Host: api.ceevo.com
 Authorization: Bearer access_token_xxxxxxxxxx
 Content-Type: application/json

 {
 "3dsecure": true,
 "accountToken": "81b39244-dd6b-4a5b-9030-3e10ae7bdc02",
  "amount": 10100,
  "currency": "EUR",
  "methodCode": "CARDS",
  "redirectUrls": {
    "successUrl": "https://www.merchant.com/success",
    "failureUrl": "https://www.merchant.com/failure"
  },
  "referenceId": "YourReference",
  "sessionId": "d6eaa343-d2ae-4f5a-8626-dab52ff2801c",
  "userEmail": "[email protected]"
 }

Charge API request example with description

Parameter Description
3dsecure Indicate transaction shall / shall not go through 3DSecure Authentication, recommended : true for CIT
accountToken Account Token returned from Payment Widget SDK
amount Amount in the smallest unit, 10100 represent Amount in 101.00
currency ISO-3 Currency Code
methodCode Payment Method to be used in this transaction
redirectUrls.successUrl Payment Page to redirect customer when transaction is successful
redirectUrls.failureUrl Payment Page to redirect customer when transaction has failed
referenceId Transaction Reference from your system
sessionId Session Id returned from Payment Widget SDK
userEmail Email Address of the cardholder

Handle 3DSecure User Redirection

Once the charge request is sent to Ceevo, user is required to authenticate themselves with their issuing bank.

The following data will be available in HTTP response.

 HTTP/1.1 302 Found
 Location: http://api.ceevo.com/redirect/34bad767-355e-4da4-a7f8-ad464df3dbe5

 {
    "statusCode": "PENDING",
    "message": "Y2IxYjllZTEtNTE2Yy00NjBmLWEwYTktZDJjYzRiZmJjMDNl",
    "paymentId": "b33a5830-787a-44c1-804a-8733e8e968f9"
 }

Charge API response example with description

Parameter Description
Location The URL where cardholder shall be redirected to authenticate with issuing bank
statusCode status code of this transaction in Ceevo
message one-time encryption key to authenticate callback from Ceevo in next step
paymentId Unique Transaction Id in Ceevo

Handle callback from Ceevo

Once cardholder authentication is complete, the cardholder will be redirected to successUrl / failureUrl once transaction complete at Ceevo.

Transaction result in JSON format will be sent to your system during this callback.

Response details are as below:

Parameter Description
statusCode status code of this transaction in Ceevo
description Status Description
paymentId Unique Transaction Id in Ceevo
referenceId Transaction Reference from your system
amount Amount in the smallest unit, 10100 represent Amount in 101.00
currency ISO-3 Currency Code
user Email Address of the cardholder
transactionDate Transaction Datetime in Ceevo

This callback makes use of the cardholder browser session in sending data back to your server. The transaction result is sent on top of an additional encryption layer to prevent data tampering.

The transaction result JSON data is compacted and encrypted using the one-time encryption key. The following data will be send to the successUrl / failureUrl in hidden fields.

Parameter Description
payload Base64 encoded encrypted transaction result JSON payload
HMACSHA256 HMACSHA256 checksum of transaction result JSON payload

CIT with existing Customer

Once a customer account is registered, payment details collected and tokenized using the Payment Widget SDK there is no need to ask a customer to provide their payment details again at checkout for subsequent transactions.

When collecting customer payment details, Card Verification Value (CVV) much be collected from the customer for each transaction despite all other payment details being stored and tokenized.

Follow the steps below to process CIT for existing customers with 3DSecure Authentication:

Send Payment to /charge API

 POST /charge HTTP/1.1
 Host: api.ceevo.com
 Authorization: Bearer access_token_xxxxxxxxxx
 Content-Type: application/json

 {
  "3dsecure": true,
  "customerId":"34bad767-345e-4da4-a7f8-addfgfdf3dbe5",
  "cvv":"123",
  "amount": 10120,
  "currency": "EUR",
  "methodCode": "CARDS",
  "redirectUrls": {
    "successUrl": "https://www.merchant.com/success",
    "failureUrl": "https://www.merchant.com/failure"
  },
  "referenceId": "YourReference",
  "sessionId": "d6eaa343-d2ae-4f5a-8626-dab52ff2801c"
 }

Required parameters are similar to those required for processing a CIT Payment except for userEmail and accountToken, as these parameters aren't needed. Please note, it is necessary to collect Card Verification Value (CVV) for each transaction for cardholder verification.

The rest of the payment flow is identical to processing a CIT Payment.

Plugins

Overview

We offer plugin support for numerous eCommerce platforms. Supported platforms include:

Issuing

Welcome to the API Issuing guide. The following pages show you how you can issue and manage your own prepaid card program using the Ceevo Issuing API.

Please Note – Before using these API, please contact our sales representative to discuss your program.

Issuing Essential

Using the Ceevo Issuing API’s gives you the ability to issue prepaid cards (plastic and virtual) to your customers and/or staff depending on need. The prepaid cards funds are maintained from a central funding account (the float account) that must have a credit balance at all times to cover the funds committed to the accounts and cards. Virtual and plastic cards can be used for purchases online and in retail outlets and plastic cards will also allow the user to withdraw cash from ATM’s depending on the program. The Issuing API’s also let you do the following:

Issuing API Integration Guide

The Issuing API is RESTful and JSON formatted and can be called from almost any platform.

Content-Type: application/json

The above HTTP header is required when calling the Ceevo Issuing API.

Reseller information

The following reseller information can be checked using the API.

Reseller Subscriptions

You can query multiple reseller subscriptions or check out single ones by ID.

To get multiple subscriptions, call the /v1/business/reseller-subscriptions/list API:


GET /v1/business/reseller-subscriptions/list?page=0&per_page=20&reseller_code=TCC002 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied in query string:

Name Descriptiomn
page page number, zero-based.
per_page how many records per page.
reseller_code Reseller code, this code is given by our sales representative during account creation.

Sample response:


HTTP/1.1 200 Ok
{
  "pageMeta": {
    "links": null,
    "perPage": 20,
    "totalPages": 1,
    "numberOfPageElements": 2,
    "totalElements": 2
  },
  "resellerSubscriptionList": [
    {
      "cardProgramID": "dd7a9150-76be-11e9-8ca2-438d66b64dfc",
      "resellerCode": "TCC001",
      "resellerName": "TCC001 Reseller",
      "uniqueFloat": true,
      "loadFee": 1,
      "loadFeePct": 1,
      "loadFeeCap": 4,
      "loadFeebillMethod": "FLOAT",
      "appFee": 0.5,
      "appFeeBillMethod": "FLOAT",
      "monthlyFee": 3,
      "monthlyFeeBillMethod": "FLOAT",
      "apiFee": 1,
      "apiFeeBillMethod": "FLOAT",
      "alertContact": "[email protected]",
      "resellerType": "STANDARD",
      "id": "dd927d2e-76be-11e9-8ca2-1f7dd759ffbe",
      "resellerId": "dd8cdaf4-76be-11e9-8ca2-eff1d89a4bd8",
      "defCurrency": "EUR",
      "status": "ACTIVE"
    },
    {
      "cardProgramID": "dd836f14-76be-11e9-8ca2-37fb51e9706e",
      "resellerCode": "TCC001",
      "resellerName": "TCC001 Reseller",
      "uniqueFloat": true,
      "loadFee": 1,
      "loadFeePct": 1,
      "loadFeeCap": 4,
      "loadFeebillMethod": "INVOICE",
      "appFee": 0.5,
      "appFeeBillMethod": "INVOICE",
      "monthlyFee": 3,
      "monthlyFeeBillMethod": "INVOICE",
      "apiFee": 1,
      "apiFeeBillMethod": "INVOICE",
      "alertContact": "[email protected]",
      "resellerType": "STANDARD",
      "id": "dd92d79c-76be-11e9-8ca2-d7b38ce24080",
      "resellerId": "dd8cdaf4-76be-11e9-8ca2-eff1d89a4bd8",
      "defCurrency": "EUR",
      "status": "ACTIVE"
    }
  ]
}

To get a single subscription by ID, call the /v1/business/reseller-subscriptions/{id} API:


GET /v1/business/reseller-subscriptions/dd96f0a2-76be-11e9-8ca2-9781e9c6077b HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Descriptiomn
id Reseller Subscription ID. This unique ID is created by the system to identify each record. You can get it from the multiple subscriptions API explained above.

Sample response:


HTTP/1.1 200 Ok
{
  "cardProgramID": "dd7a9150-76be-11e9-8ca2-438d66b64dfc",
  "resellerCode": "TCC002",
  "resellerName": "TCC002 Reseller",
  "uniqueFloat": false,
  "loadFee": 1,
  "loadFeePct": 1,
  "loadFeeCap": 4,
  "loadFeebillMethod": "FLOAT",
  "appFee": 0.5,
  "appFeeBillMethod": "FLOAT",
  "monthlyFee": 3,
  "monthlyFeeBillMethod": "FLOAT",
  "apiFee": 1,
  "apiFeeBillMethod": "FLOAT",
  "alertContact": "[email protected]",
  "resellerType": "STANDARD",
  "id": "dd96f0a2-76be-11e9-8ca2-9781e9c6077b",
  "resellerId": "dd8d2d60-76be-11e9-8ca2-9fc614d35d6c",
  "defCurrency": "EUR",
  "status": "ACTIVE"
}

Float Account information

The following reseller information can be checked using the API.

Float Account Balance

To get your float account balance, call the /v1/business/floataccounts/balance API:


GET /v1/business/floataccounts/balance?card_program_code=T24BL&currency_code=EUR HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied in query string:

Name Description
card_program_code Card Program Code, this code is provided by our sales representative during account creation.
currency_code IBAN Currency Code (ISO 4217)

Sample response:

An array of FloatResult


HTTP/1.1 200 Ok
[
    {
      "amount": 200,
      "cardProgCode": "T24BL",
      "cardProgId": "00000000-0000-0000-0000-000000000000",
      "currency": "EUR",
      "floatAccountType": "DEDICATED",
      "hasPendingDebitOrCredit": false,
      "resellerCode": "TCC001",
      "resellerName": "TCC001 Reseller",
      "resellerStatus": "ACTIVE"
    }
]

Float Account Statement

To process the statement at a later time you can obtain it as a JSON object or you can also download as a Microsoft Excel file.

To get the JSON output, call the /v1/business/cardprograms/{cardProgramCode}/resellers/{resellerCode}/statement API:


GET /v1/business/cardprograms/T24BL/resellers/TCC001/statement?currency_code=EUR&from_date=2018-07-01&page=0&per_page=20&to_date=2019-01-31 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
cardProgramCode Card Program code, this code is provided by our sales representative during account creation.
resellerCode Reseller code, this code is given by our sales representative during account creation.

Parameters to be supplied in query string:

Name Descriptiomn
currency_code IBAN Currency Code (ISO 4217)
from_date The start date of the statement
to_date The end date of the statement
page page number, zero-based
per_page number of records per page

Sample response:


HTTP/1.1 200 Ok
{
  "closingBalance": 0,
  "openingBalance": 0,
  "pageMeta": {
    "links": [
      {
        "deprecation": "string",
        "href": "string",
        "hreflang": "string",
        "media": "string",
        "rel": "string",
        "templated": true,
        "title": "string",
        "type": "string"
      }
    ],
    "numberOfPageElements": 0,
    "perPage": 0,
    "totalElements": 0,
    "totalPages": 0
  },
  "statementResultList": [
    {
      "cardProgCode": "T24BL",
      "chargeType": "Monthly Fee",
      "currencyCode": "EUR",
      "itemAmount": 2,
      "itemBalance": 200,
      "itemDesc": "Monthly Fee",
      "resellerCode": "TCC001",
      "resellerName": "TCC001 Reseller",
      "timestamp": "2017-05-01T12:56:32Z",
      "user": "t24user"
    }
  ]
}

To download the statement as a Microsoft Excel file, call the /v1/business/cardprograms/{cardProgramCode}/resellers/{resellerCode}/statement/download API:

GET "/v1/business/cardprograms/T24BL/resellers/TCC001/statement/download?currency_code=EUR&from_date=2018-07-01&to_date=2019-01-31 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
cardProgramCode Card Program code, this code is provided by our sales representative during account creation.
resellerCode Reseller code, this code is given by our sales representative during account creation.

Parameters to be supplied in query string:

Name Descriptiomn
currency_code IBAN Currency Code (ISO 4217)
from_date The start date of the statement
to_date The end date of the statement

Sample response:

The statement as Microsoft Excel file in base64 format.

Card Management

Once you are registered as a reseller, you can use the Issuing API to issue and manage virtual and plastic cards for your chosen customers or staff. The following queries are supported:

Submit Application

Use this API to submit applications by your customers or staff.

Please call the /v1/aba/issuing-apps API:


POST /v1/aba/issuing-apps HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "birthDate": "1990-07-22",
  "cardProgramCode": "T24BL",
  "clientAppRef": "CAF-00001",
  "countryOfResidence": "UK",
  "defaultCurrencyCode": "EUR",
  "email": "[email protected]",
  "feeProfileId": 1,
  "firstName": "Elizabeth",
  "fourthLine": "Company Name",
  "gender": "M",
  "homePhone": "+14081234567",
  "isPlasticRequired": true,
  "kycLevel": "FDD",
  "lastName": "Lawrence",
  "maidenName": "Rachel",
  "matrixPid": "EMU003",
  "mobilePhone": "+14081234567",
  "overrideAddress1": "138 Dover Road",
  "overrideAddress2": "WEST WEMYSS",
  "overrideAddress3": "KY1 5NN",
  "overrideCity": "WEST WEMYSS",
  "overrideCountryCode": "UK",
  "overridePostalCode": 8123,
  "overrideRegion": "ST10 4JQ",
  "resellerCode": "TCC001",
  "secondName": "Alexandra",
  "title": "MISS",
  "workPhone": "+14081234567"
}

Sample Response:


HTTP/1.1 201 Created
{
  "id": "bca554d5-370a-4f9b-abf2-9d7bc1523f6f",
  "issuingAppRefId": "ISS190711-U1CR",
  "resellerCode": "TCC001",
  "clientAppRef": "CAF-00001"
}

Application Status Enquiry

You can check the status of an application that has been submitted by using this call:

Please call the /v1/aba/issuing-apps/{id} API:


GET /v1/aba/issuing-apps/bca554d5-370a-4f9b-abf2-9d7bc1523f6f HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
id The application ID that was system-generated during application submission

Sample response:


HTTP/1.1 200 Ok
{
  "id": "bca554d5-370a-4f9b-abf2-9d7bc1523f6f",
  "accountReference": null,
  "firstName": "Elizabeth",
  "lastName": "Lawrence",
  "issuingAppStatus": "Pending",
  "issuingAppRefId": "ISS190711-U1CR",
  "resellerCode": "TCC001",
  "clientAppRef": "CAF-00001",
  "createdDate": "2019-07-11T09:18:49Z",
  "isPlasticRequired": true,
  "isAccountCreated": null,
  "isCardCreated": null,
  "kycAppRefId": null,
  "kycCheckStatus": null,
  "accountRequest": null,
  "cardRequest": null
}

Create Virtual Card

You can setup virtual cards that can be used online immediately by using this call:

Please call the /v1/aba/issuing-apps/{id}/virtual-card API:


POST /v1/aba/issuing-apps/bca554d5-370a-4f9b-abf2-9d7bc1523f6f/virtual-card HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
}

Parameters to be supplied as part of the URL:

Name Description
id The application ID that was system-generated during application submission

Sample response:


HTTP/1.1 201 Created
{
}

Top-up Card Holder Account

You can transfer funds from the float account to the customer or staff account by using this call:

Please call the /v1/floataccounts/{id}/transactions/ API:


POST //v1/floataccounts/bca554d5-370a-4f9b-abf2-9d7bc1523f6f/transactions/ HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "transactionType": "ACCOUNT_LOAD"
  "currency": "EUR"
  "amount": "200"
  "customerAccountId": "1700000001"
}

Parameters to be supplied as part of the URL:

Name Description
id This unique ID is generated by the system when an Application is created. Not to be confused with the Application ID.

Sample response:


HTTP/1.1 201 Created
{
}

KYC

Know Your Customer is the process of verifying customers' identities based on their ID and proof of address documents. Although tightly integrated with Ceevo Issuing, Ceevo KYC API is a separate module that can be used individually.

KYC Essential

Ceevo KYC can be explained in the following steps:

  1. Create a KYC Application
  2. Submit a Capture Request
  3. Send an SMS to the applicant's mobile phone, which contains the link to the KYC HTML5 app
  4. The applicant launches the KYC HTML5 app to upload photos of ID, selfie & proof of address (POA) documents
  5. Depending on the KYC Client configuration, up to three checks will be performed:
    1. ID & selfie, which are verified automatically by system
    2. POA, which needs manual verification
    3. Sanction will be verified automatically using the first name, last name and date of birth.
  6. When all checks have been passed, the KYC application is approved.
  7. Status of the KYC Application can be queried.

Only step 1,2 & 7 are exposed as public APIs. The other steps are handled internally either by the Ceevo KYC system or by our operator.

Please Note - step 1 & 2 are performed when using the Submit Application API.

KYC API Integration Guide

The KYC API is RESTful and JSON formatted and can be called from almost any platform.

Content-Type: application/json

The above HTTP header is required when calling the Ceevo Issuing API.

Submit KYC Application

Use this API to submit KYC applications by your customers or staff, i.e the applicant.

Please call the /v1/kyc/applications API:


POST /v1/kyc/applications HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "address1": "Unknown",
  "address2": "Unknown",
  "address3": "Unknown",
  "birthDate": "1990-07-22",
  "city": "Unknown",
  "clientAppRef": "CAF-00001",
  "clientReference": "KYCABC",
  "countryCode": "US",
  "countryOfResidence": "US",
  "countyOrState": "Capricorn",
  "email": "[email protected]",
  "firstName": "Some",
  "gender": "M",
  "homePhone": "+12345678901",
  "lastName": "Body",
  "mobilePhone": "+12345678901",
  "postCode": 802,
  "title": "Mr"
}

Sample Response:


HTTP/1.1 201 Created
{
  "clientReference": "KYCABC",
  "clientAppRef": "CAF-00001",
  "appReferenceId": "KYC190711-FOJB"
}

The appReferenceId is used in the next step.

Submit Capture Request

Use this API to submit a capture request so that the applicant will recieve an SMS to launch the KYC HTML5 app to upload photos of documents.

Please call the /v1/kyc/applications/{appReferenceId}/submit-capture-requests API:


POST /v1/kyc/applications/KYC190711-FOJB/submit-capture-requests HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{}

Parameters to be supplied as part of the URL:

Name Description
appReferenceId The App Reference ID is created when you submit a KYC Application

Sample response:


HTTP/1.1 200 Ok
{
  "secureKycUrl": "http://test-kyc.lokto.com/kyc-html5/BF3aw9G",
  "captureInfos": [
    {
      "sequence": 1,
      "checkReferenceId": "ICHK190711-HKAN",
      "captureType": "LIVE_ID",
      "captureStatus": "PENDING",
      "remark": "Result not received. Waiting for fetching full response and images. "
    },
    {
      "sequence": 2,
      "checkReferenceId": "ICHK190711-HKAN",
      "captureType": "LIVE_FACE_DETECT",
      "captureStatus": "PENDING",
      "remark": "Result not received. Missing selfie images. "
    }
  ]
}

An SMS is then send to the applicant. It contains the secureKycUrl, which is the URL to the KYC HTML5 app. The mobile phone number was specified using the mobilePhone of the Submit KYC Application step.

Check KYC application staus

You can check the statuses of multiple KYC applications at once, or check them individually by providing the appReferenceId.

To check multiple KYC applications, please call the /v1/kyc/applications API:


GET /v1/kyc/applications?pageNum=0&pageSize=20 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied in query string:

Name Description
page page number, zero-based.
per_page how many records per page.

Optional parameters to be supplied in the query string to filter down the results:

Name Description
appReferenceId The Reference Id of the KYC application
applicationStatus The KYC application status, please refer to the data dictionary
clientAppRef Client Application Reference, the external unique reference provided from Reseller, to identify this KYC application.
dateFrom The start date for searching the application
dateTo The end date for searching the application
lastName The surname of the applicant
oldestFirst To list out the record(s) in ascending order or not

Sample response:


HTTP/1.1 200 Ok
{
  "applications": [
    {
      "clientReference": "TC003",
      "clientName": "KYC Client",
      "appReceivedDate": "2019-07-12T05:09:37Z",
      "kycReceivedDate": "2019-07-12T05:11:55Z",
      "outstandingDays": 0,
      "firstName": "Horace",
      "lastName": "Thomas",
      "fullName": "Horace Thomas",
      "appReferenceId": "KYC190712-CI5U",
      "clientAppRef": "KYCABC",
      "applicationStatus": "Approved",
      "idCheckStatus": "Manual Approval",
      "poaCheckStatus": "Approved",
      "sanctionCheckStatus": "No Match"
    },
    {
      "clientReference": "TC003",
      "clientName": "KYC Client",
      "appReceivedDate": "2019-07-12T03:06:05Z",
      "kycReceivedDate": "2019-07-12T03:08:39Z",
      "outstandingDays": 0,
      "firstName": "Horace",
      "lastName": "Thomas",
      "fullName": "Horace Thomas",
      "appReferenceId": "KYC190712-WSX8",
      "clientAppRef": "KYCABC",
      "applicationStatus": "KYC Validation",
      "idCheckStatus": "N/A",
      "poaCheckStatus": "N/A",
      "sanctionCheckStatus": "N/A"
    },
    .
    .
    .
    .
  ],
  "pageMeta": {
    "links": null,
    "perPage": 20,
    "totalPages": 12,
    "numberOfPageElements": 20,
    "totalElements": 234
  }
}

To check a single KYC application, please call the /v1/kyc/applications/{appReferenceId} API:


GET /v1/kyc/applications/KYC190711-FOJB HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
appReferenceId The Reference Id of the KYC application

Sample response:


HTTP/1.1 200 Ok
{
  "clientType": "ISSUING",
  "clientReference": "LOKTO",
  "appReferenceId": "KYC190711-FOJB",
  "clientAppRef": "CAF-00001",
  "applicationStatus": "KYC Validation",
  "verifyAttempts": 1,
  "appReceivedDate": "2019-07-11T04:27:32Z",
  "lastSmsSentDate": "2019-07-11T04:27:46Z",
  "isCaptureRequestCompleted": false,
  "smsCount": 1,
  "productMatrixInfo": {
    "idCheckRequired": true,
    "poaCheckRequired": false,
    "sanctionCheckRequired": true,
    "frmRequired": true
  },
  "contactInfo": {
    "title": "Mr",
    "firstName": "Peter",
    "lastName": "Pan",
    "email": "[email protected]",
    "mobile": "+12345678901"
  },
  "idCheckInfo": {
    "checkId": "c9cbeb23-3775-4637-b649-3297f8cacefa",
    "checkStatusName": null,
    "checkStatusDesc": null,
    "idReturnInfo": {
      "birthDate": null,
      "gender": null,
      "documentClass": null,
      "documentNumber": null
    },
    "idCheckDocs": [],
    "isFrmRequired": true,
    "faceMatchScore": null,
    "isFaceMatch": null
  },
  "poaCheckInfo": null,
  "sanctionCheckInfo": {
    "checkId": "46869d19-1481-4bcf-bde7-a661a9ef707b",
    "checkStatusName": null,
    "checkStatusDesc": null,
    "firstSubmittedDate": "",
    "latestResubmittedDate": ""
  }
}

Corporate module

The Corporate module is an enhancement to Ceevo Issuing products that lets you manage pre-paid funds between accounts plus create and manage virtual Visa cards to use for expenditure. You can also add references to each card created to enhance your management information reporting.

Corporate module essential

The following operations are exposed as APIs for developers to integrate with their system. All APIs require authentication to access:

  1. System Table
    • Corporate Account Statuses
    • Corporate Card Programs
    • Physical Card Statuses
    • Virtual Card Statuses
  2. Corporate Dashboard
  3. Account management
    • Search Corporate Accounts
    • Corporate Account Enquiry
    • Corporate Account Profile Enquiry
    • Create Corporate Account
    • Update Corporate Account Status
  4. Corporate Configuration
  5. Fund Management
    • Corporate Balance Enquiry
    • Corporate Balance Overview
    • Add Fund Entry
    • Fund Entry Enquiry
    • Update Fund Entry Status
  6. Virtual Card Management
    • Virtual Card List
    • Virtual Card Enquiry
    • Virtual Card Parameters
    • Order Virtual Card
    • Cancel Virtual Card
  7. Statements
    • Statements
    • Export Statements
    • Fee Detail
    • Load Detail
    • Transaction Detail
    • Export Transaction Detail
    • One Time Detail
    • Export Transaction Virtual Card Detail
    • Virtual Card Detail

Corporate Module API Integration Guide

The Corporate Module API is RESTful and JSON formatted and can be called from almost any platform.

Content-Type: application/json

The above HTTP header is required when calling the Ceevo Issuing API.

System Table

These APIs are for querying information of basic components of the Corporate Module.

Corporate Account Statuses

Use this API to query the statuses of all the corporate accounts.

Please call the /v1/aba/corp-account-statuses API:


GET /v1/aba/corp-account-statuses HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
[
  {
    "account_status_code": 0,
    "account_status_name": "ACTIVE",
    "label": "Active"
  }
]

Corporate Card Programs

Use this API to query the information of all the card programs.

Please call the /v1/aba/corp-card-programs API:


GET /v1/aba/corp-card-programs HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
[
  {
    "card_program_code": "CORPPAY",
    "currency_code": "EUR",
    "label": "CORPPAY (EUR)"
  }
]

Physical Card Statuses

Use this API to query the statuses of all the physical cards.

Please call the /v1/aba/physical-card-statuses API:


GET /v1/aba/physical-card-statuses HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
[
  {
    "card_status_code": 0,
    "card_status_name": "ACTIVE",
    "label": "Active"
  }
]

Virtual Card Statuses

Use this API to query the statuses of all the virtual cards.

Please call the /v1/aba/virtual-card-statuses API:


GET /v1/aba/virtual-card-statuses HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
[
  {
    "card_status_code": 0,
    "card_status_name": "ACTIVE",
    "label": "Active"
  }
]

Corporate Dashboard

Use this API to query the summary of a card program (the corporate dashboard).

Please call the /v1/aba/corp-dashboard API:


GET /v1/aba/corp-dashboard?card_program_code=CORPPAY&card_type=ALL&currency_code=EUR&duration=30 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied in query string:

Name Description
card_program_code The card program code.
card_type Available values : ALL, PHYSICAL, VIRTUAL
currency_code The default currency code of the card program.
duration The no. of days on or before today, to derive the application statuses statistics.

Sample Response:


HTTP/1.1 200 Ok
{
  "account_balance": 3000.75,
  "account_otb": 2000.45,
  "active_cards": 600,
  "average_txn_amount": 1000.23,
  "card_program_code": "CORPPAY",
  "card_type": "ALL",
  "currency_code": "EUR",
  "duration": 30,
  "float_balance": 50000.25,
  "multi_use_cards": 240,
  "one_time_use_cards": 360,
  "total_num_of_txns": 123456,
  "total_spends": 1000.36
}

Account Management

These APIs are for managing corporate accounts.

Search Corporate Accounts

Use this API to query the list of corporate accounts.

Please call the /v1/aba/corp-accounts API:


GET /v1/aba/corp-accounts?account_reference=PSIUKCORPPAYTCC001-0001&account_status_code=0&card_program_code=UATPV&corp_account_ref=Business%20Expense%20AC&currency_code=EUR&issuing_account_id=00000000-0000-0000-0000-000000000000&page_num=0&page_size=20 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied in query string:

Name Description
account_reference The issuing account reference
account_status_code The corporate account status code, Please refer to the data dictionary
card_program_code The card program code
corp_account_ref The corporate account reference
currency_code The default currency of the card program
issuing_account_id The unique id of issuing account
page_num page number, starts with zero
page_size number or records per page

Sample Response:


HTTP/1.1 200 Ok
{
  "accounts": [
    {
      "account_aotb": 4900,
      "account_balance": 5000,
      "account_id": 1700000001,
      "account_reference": "PSIUKUATPVTC100UATPV[EUR]-11EUR",
      "account_status": "Active",
      "account_status_code": 0,
      "card_holder_name": "Corporate Pay",
      "card_program_code": "CORPPAY",
      "corp_account_ref": "Business Expense AC",
      "currency_code": "EUR",
      "has_pending_load": true,
      "id": "4e924061-bf8d-4d57-9df4-3b1bba6c835a"
    }
  ],
  "page_meta": {
    "number_of_page_elements": 0,
    "per_page": 0,
    "total_elements": 0,
    "total_pages": 0
  }
}

Corporate Account Enquiry

Use this API to place a query for account information.

Please call the /v1/aba/corp-accounts/{id} API:


GET /v1/aba/corp-accounts/12345678-2234-3234-4234-210987654321 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_id": 877537,
  "account_reference": "PSIUKCORPPAYTCC001-0001",
  "account_status_code": 0,
  "account_status_name": "Active",
  "card_holder_name": "Corporate Pay",
  "card_program_code": "CORPPAY",
  "corp_account_ref": "Business Expense AC",
  "currency_code": "EUR",
  "issuing_account_id": "12345678-2234-3234-4234-210987654321"
}

Corporate Account Profile Enquiry

Use this API to place a query for the profile information on a corporate account.

Please call the /v1/aba/corp-accounts/{id}/profile API:


GET /v1/aba/corp-accounts/12345678-2234-3234-4234-210987654321/profile HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "accountLimits": [
    {
      "amount": 0,
      "limitType": "string"
    }
  ]
}

Create Corporate Account

Use this API to create a new coporate account.

Please call the /v1/aba/corp-accounts API:


POST /v1/aba/corp-accounts HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "card_program_code": "UATPV",
  "corp_account_ref": "Business Expense AC",
  "currency_code": "EUR"
}

Sample Response:


HTTP/1.1 200 Ok
{
  "issuing_account_id": "12345678-2234-3234-4234-210987654321"
}

Update Corporate Account Status

Use this API to update the information on a corporate account.

Please call the /v1/aba/corp-accounts/{id}/update-status API:


PUT /v1/aba/corp-accounts/12345678-2234-3234-4234-210987654321/update-status HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "account_status_code": 0
}

Sample Response:


HTTP/1.1 200 Ok

Corporate Configuration

Use this API to place a query on the settings for a corporate account.

Please call the /v1/aba/corp-config API:


GET /v1/aba/corp-config?card_program_code=UATPV&currency_code=EUR HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
card_program_code card program code
currency_code currency code

Sample Response:


HTTP/1.1 200 Ok
{
  "load_fund_info": {
    "break_value": 500,
    "currency_code": "EUR",
    "two_step_validate_required": true
  },
  "virtual_fields": [
    {
      "field_name": "Invoice Number",
      "field_number": 1
    }
  ],
  "virtual_presets": [
    {
      "content": "Please keep this pdf ...",
      "format": "TEXT",
      "preset_name": "Travel"
    }
  ]
}

Fund Management

These APIs are for managing funds and corporate balances.

Corporate Balance Enquiry

Use this API to query the information of corporate balance.

Please call the /v1/aba/corp-accounts/{id}/corp-balance API:


GET /v1/aba/corp-accounts/12345678-2234-3234-4234-210987654321/corp-balance HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_aotb": 2000,
  "account_balance": 2000.75,
  "account_id": 1700000001,
  "account_reference": "PSIUKCORPPAYTCC001-0001",
  "account_status": "Active",
  "card_holder_name": "Corp Pay",
  "card_program_code": "CORPPAY",
  "currency_code": "EUR",
  "float_balance": 5000
}

Corporate Balance Overview

Use this API to query the overview of corporate balance.

Please call the /v1/aba/corp-accounts/{id}/corp-balance-overview API:


GET /v1/aba/corp-accounts/12345678-2234-3234-4234-210987654321/corp-balance-overview HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "balance_infos": [
    {
      "account_aotb": 2000,
      "account_balance": 2000.75,
      "account_id": 1700000001,
      "account_reference": "PSIUKCORPPAYTCC001-0001",
      "account_status": "Active",
      "card_holder_name": "Corporate Pay",
      "card_program_code": "CORPPAY",
      "currency_code": "EUR",
      "float_balance": 5000,
      "fund_entry_id": "12345678-2234-3234-4234-210987654321",
      "has_pending_load": true,
      "pending_load_amount": 480
    }
  ],
  "page_meta": {
    "number_of_page_elements": 0,
    "per_page": 0,
    "total_elements": 0,
    "total_pages": 0
  }
}

Add Fund Entry

Use this API to add a funding entry.

Please call the /v1/aba/corp-accounts/{id}/fund-entries API:


POST /v1/aba/corp-accounts/{id}/fund-entries HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "amount": 100,
  "currency_code": "EUR",
  "entry_desc": "Load for Travel",
  "entry_type": "LOAD",
  "operator_name": "david.chan"
}

Sample Response:


HTTP/1.1 201 Created

Fund Entry Enquiry

Use this API to place a query on the funding entry information.

Please call the /v1/aba/fund-entries/{id} API:


GET /v1/aba/fund-entries/12345678-2234-3234-4234-210987654321 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_reference": "PSIUKCORPPAYTCC001-0001",
  "amount": 500,
  "corp_account_ref": "Business Expense AC",
  "currency_code": "EUR",
  "decision_by": "susan.cheung",
  "entry_desc": "Load for Travel",
  "entry_status": "Approved",
  "entry_type": "Load",
  "fund_entry_id": "00000000-0000-0000-0000-000000000000",
  "issuing_account_id": "12345678-2234-3234-4234-210987654321",
  "setup_by": "david.chan"
}

Update Fund Entry Status

Use this API to update the status of a funding entry. There are two choices:

Please call the /v1/aba/fund-entries/{id}/update-status API:


POST /v1/aba/fund-entries/12345678-2234-3234-4234-210987654321/update-status HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "entry_status": "APPROVE",
  "operator_name": "susan.cheung",
  "reason": "Signed by manager"
}

Sample Response:


HTTP/1.1 201 Created

Virtual Card Management

These APIs are for managing virtual cards

Virtual Card List

Use this API to place a query for the listing of the virtual cards.

Please call the /v1/aba/accounts/{accountId}/virtual-cards API:


GET /v1/aba/accounts/1700000001/virtual-cards HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "virtual_cards": [
    {
      "account_reference": "PSIUKCORPPAYTCC001-0001",
      "active": true,
      "card_holder_name": "Corporate Pay",
      "card_program_code": "CORPPAY",
      "card_sequence": 1,
      "card_status": "Active",
      "card_uin": "1700000001-010-9",
      "currency_code": "EUR",
      "cvv": 123,
      "expiry_date": "2020-12-31",
      "fourth_line": "TESTING",
      "issued_date": "2019-01-01",
      "pan": 4762550000000000,
      "pin_attempts": 0,
      "preset_infos": [
        {
          "content": "Please keep this pdf ...",
          "format": "TEXT",
          "preset_name": "Travel"
        }
      ],
      "settlement_date": "2020-12-31",
      "user_defined_fields": [
        {
          "field_number": 1,
          "field_value": "Invoice# 1234"
        }
      ],
      "virtual_card_type": 2,
      "virtual_card_type_name": "Multiple Use",
      "virtual_panlimit_info": {
        "current_spend_amount": 2000,
        "current_use_count": 5,
        "max_spend_amount": 2500,
        "max_use_count": 12
      }
    }
  ]
}

Virtual Card Enquiry

Use this API to place a query on the details of a virtual card. This can be used to generate a PDF.

Please call the /v1/aba/virtual-cards/{cardUIN} API:


GET /v1/aba/virtual-cards/1700000001-010-9 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_reference": "PSIUKCORPPAYTCC001-0001",
  "active": true,
  "card_holder_name": "Corporate Pay",
  "card_program_code": "CORPPAY",
  "card_sequence": 1,
  "card_status": "Active",
  "card_uin": "1700000001-010-9",
  "currency_code": "EUR",
  "cvv": 123,
  "expiry_date": "2020-12-31",
  "fourth_line": "TESTING",
  "issued_date": "2019-01-01",
  "pan": 4762550000000000,
  "pin_attempts": 0,
  "preset_infos": [
    {
      "content": "Please keep this pdf ...",
      "format": "TEXT",
      "preset_name": "Travel"
    }
  ],
  "settlement_date": "2020-12-31",
  "user_defined_fields": [
    {
      "field_number": 1,
      "field_value": "Invoice# 1234"
    }
  ],
  "virtual_card_type": 2,
  "virtual_card_type_name": "Multiple Use",
  "virtual_panlimit_info": {
    "current_spend_amount": 2000,
    "current_use_count": 5,
    "max_spend_amount": 2500,
    "max_use_count": 12
  }
}

Virtual Card Params

Use this API to place a query on the parameters for a virtual card creation such as spending limit, use limit etc…

Please call the /v1/aba/accounts/{accountId}/virtual-cards/params API:


GET /v1/aba/accounts/1700000001/virtual-cards/params HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "virtual_card_param_infos": [
    {
      "expire_on_decline": false,
      "max_spend_amount": 2500,
      "max_use_count": 12,
      "validity_period": 1,
      "validity_period_type": 5,
      "virtual_card_type": 2,
      "zero_value_auth": true
    }
  ]
}

Create a Virtual Card

Use this API to create a new virtual card

Please call the /v1/aba/accounts/{accountId}/virtual-cards API:


POST /v1/aba/accounts/1700000001/virtual-cards HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

{
  "card_holder_name": "Corporate Pay",
  "fourth_line": "TESTING",
  "max_spend_amount": 100.5,
  "max_use_count": 12,
  "user_defined_fields": [
    {
      "field_number": 1,
      "field_value": "Invoice# 1234"
    }
  ],
  "virtual_card_type": 2
}

Sample Response:


HTTP/1.1 200 Ok
{
  "cardUIN": "1700000001-010-9"
}

Cancel Virtual Card

Use this API to cancel a virtual card

Please call the /v1/aba/virtual-cards/{cardUIN}/cancel API:


POST /v1/aba/virtual-cards/1700000001-010-9/cancel HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok

Statements

These APIs are for querying and exporting statements and transaction details

Statements

Use this API to query all statements.

Please call the /v1/aba/accounts/{accountId}/statements API:


GET /v1/aba/accounts/1700000001/statements?card_uin=16818935-001-5&currency_code=EUR&end_date=2019-12-31&start_date=2019-03-01 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
card_uin The unique identification number of the card
currency_code The transaction currency
end_date The end date of transaction
start_date The start date of transaction

Sample Response:


HTTP/1.1 200 Ok

  "account_id": 16818935,
  "end_date": "2019-12-31",
  "error_code": 0,
  "error_message": "string",
  "is_success": true,
  "start_date": "2019-01-01",
  "transactions": [
    {
      "account_balance": "2,800.91",
      "account_transaction_sequence": 556,
      "card_uin": "16818935-001-5",
      "display_account_balance": "2,800.91 EUR",
      "display_money_in": "string",
      "display_money_out": "16.56 EUR",
      "is_disputed": false,
      "is_virtual_card": false,
      "post_type": "DEBIT",
      "reserve_sequence": 0,
      "transaction_date": "2019-05-16T07:04:37Z",
      "transaction_desc": "Currency exchange EUR to GBP",
      "transaction_status": "SETTLED_PROCESSED",
      "transaction_type": 3,
      "transaction_type_desc": "Wallet Transfer",
      "txn_html_uri": "wallet-transfer",
      "ui_case_class": "normal",
      "unique_tran_reference": 18565,
      "wallet_currency_code": "EUR",
      "wallet_transaction_sequence": "2,800.91"
    }
  ],
  "workflow_response_dto": {
    "isSuccess": true,
    "requestId": "string",
    "responses": [
      {
        "message": "string",
        "responseCode": "string"
      }
    ]
  }
}

Export Statements

Use this API to export all statements as a CSV format.

Please call the /v1/aba/accounts/{accountId}/statements/export API:


GET /v1/aba/accounts/1700000001/statements/export?card_uin=16818935-001-5&currency_code=EUR&end_date=2019-12-31&start_date=2019-03-01 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
card_uin The unique identification number of the card
currency_code The transaction currency
end_date The end date of transaction
start_date The start date of transaction

Sample Response:


HTTP/1.1 200 Ok
{
  "content_type": "application/octet-stream",
  "encoded_file": "\\/9j\\/4AAQSkZJRgAB...",
  "file_name": "export.csv",
  "file_size": 1024000
}

Fee Detail

Use this API to query the detail of a fee type transaction.

Please call the /v1/aba/accounts/{accountId}/transactions/{uniqueTraceReference}/fee API:


GET /v1/aba/accounts/1700000001/transactions/1234/fee HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_id": 16818935,
  "credit_amount": {
    "amount": 9.96,
    "currency": "GBP"
  },
  "debit_amount": {
    "amount": 9.96,
    "currency": "GBP"
  },
  "error_code": 0,
  "error_message": "string",
  "fee_code": 1020,
  "fee_date": "2019-05-15T07:12:45Z",
  "fee_description": "Decline - Invalid PIN",
  "fee_id": 544,
  "fee_type": "Fee",
  "fee_type_id": 1020,
  "is_success": true,
  "status": "Processed",
  "trace_id": 18546,
  "workflow_response_dto": {
    "isSuccess": true,
    "requestId": "string",
    "responses": [
      {
        "message": "string",
        "responseCode": "string"
      }
    ]
  }
}

Load Detail

Use this API to query the detail of a load type transaction.

Please call the /v1/aba/accounts/{accountId}/transactions/{uniqueTraceReference}/load API:


GET /v1/aba/accounts/1700000001/transactions/1234/load HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_id": 16818935,
  "credit_amount": {
    "amount": 9.96,
    "currency": "GBP"
  },
  "debit_amount": {
    "amount": 9.96,
    "currency": "GBP"
  },
  "error_code": 0,
  "error_message": "string",
  "is_success": true,
  "load_date": "2019-05-15T07:02:15Z",
  "load_id": 543,
  "load_type": "Card Load",
  "status": "Processed",
  "trace_id": 18545,
  "workflow_response_dto": {
    "isSuccess": true,
    "requestId": "string",
    "responses": [
      {
        "message": "string",
        "responseCode": "string"
      }
    ]
  }
}

Transaction Detail

Use this API to query the detail of a single transaction.

Please call the /v1/aba/accounts/{accountId}/transactions/{uniqueTraceReference}/mctrans API:


GET /v1/aba/accounts/1700000001/transactions/1234/mctrans HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "account_id": 16818935,
  "date_time_stamp": "2019-06-19T08:05:58",
  "declined_approved_reason": "Approved (Unknown)",
  "error_code": 0,
  "error_message": "string",
  "fees": {
    "auth": {
      "billedFeeAmount": "string",
      "cashAmount": "string",
      "defaultFeeAmount": "string",
      "defaultFeePercentage": "string",
      "feeForexRate": "string",
      "mcForexRate": "string",
      "paddingAmount": "string",
      "purchaseAmount": "string",
      "totalBilledAmount": "string",
      "totalTransactionAmount": "string"
    },
    "outstandingReserveAmount": "string",
    "refund": {
      "mcForexRate": "string",
      "refundAmount": "string"
    },
    "reversedAmount": "string",
    "settle": {
      "billedFeeAmount": "string",
      "cashAmount": "string",
      "defaultFeeAmount": "string",
      "defaultFeePercentage": "string",
      "feeForexRate": "string",
      "mcForexRate": "string",
      "purchaseAmount": "string",
      "totalBilledAmount": "string",
      "totalTransactionAmount": "string"
    }
  },
  "is_success": true,
  "mcc": "5411 (Grocery Stores, Supermarkets)",
  "merchant": {
    "acquirer_code": 11396,
    "country_code": "US",
    "country_name": "United States",
    "merchant_id": "5411-978",
    "merchant_type": "5411 (Grocery Stores, Supermarkets)",
    "name": "Grocery Stores           Dublin       IE",
    "pan_entry": "00 (Unknown)",
    "terminal_id": 54110978,
    "terminal_pinentry": "5 (N/A)",
    "three_dsecure": "Not Supported by Merchant"
  },
  "merchant_name": "Grocery Stores           Dublin       IE",
  "trace_id": 18550,
  "workflow_response_dto": {
    "isSuccess": true,
    "requestId": "string",
    "responses": [
      {
        "message": "string",
        "responseCode": "string"
      }
    ]
  }
}

One Time Detail

Use this API to query the detail of a one-time transaction.

Please call the /v1/aba/accounts/{accountId}/transactions/{uniqueTraceReference}/onetime API:


GET /v1/aba/accounts/1700000001/transactions/1234/onetime?is_auth=true&txn_seq=1 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Parameters to be supplied as part of the URL:

Name Description
is_auth is authorized? (true / false)
txn_seq transaction sequence

Sample Response:


HTTP/1.1 200 Ok
{
  "error_code": 0,
  "error_message": "string",
  "is_match": true,
  "is_success": true,
  "otc_txn_details": [
    {
      "otc_amount": {
        "amount": 9.96,
        "currency": "GBP"
      },
      "otc_date": "2019-05-15T16:33:46Z",
      "otl_amount": {
        "amount": 9.96,
        "currency": "GBP"
      }
    }
  ],
  "reference": 18555,
  "sum_otl_amount": {
    "amount": 9.96,
    "currency": "GBP"
  },
  "transaction_amount": {
    "amount": 9.96,
    "currency": "GBP"
  },
  "transaction_date": "2019-05-15T07:31:50Z",
  "transaction_desc": "Dept Stores              Dublin       IE",
  "workflow_response_dto": {
    "isSuccess": true,
    "requestId": "string",
    "responses": [
      {
        "message": "string",
        "responseCode": "string"
      }
    ]
  }
}

Export Transaction Detail

Use this API to export a transaction as CSV format.

Please call the /v1/aba/accounts/{accountId}/transactions/{uniqueTraceReference}/{type}/export API:


GET /v1/aba/accounts/1700000001/transactions/388196192/trx/export HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "content_type": "application/octet-stream",
  "encoded_file": "\\/9j\\/4AAQSkZJRgAB...",
  "file_name": "export.csv",
  "file_size": 1024000
}

Export Transaction Virtual Card Detail

Use this API to export the detail of the virtual card in a transaction as CSV format.

Please call the /v1/aba/accounts/{accountId}/transactions/{uniqueTraceReference}/virtuals/{cardUIN}/export API:


GET /v1/aba/accounts/1700000001/transactions/388196192/virtuals/16818935-001-5/export HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "content_type": "application/octet-stream",
  "encoded_file": "\\/9j\\/4AAQSkZJRgAB...",
  "file_name": "export.csv",
  "file_size": 1024000
}

Virtual Card Detail

Use this API to query the status of the virtual card involved in the transaction.

Please call the /v1/aba/accounts/{accountId}/virtuals/{cardUIN} API:


GET /v1/aba/accounts/1700000001/virtuals/1700000001-010-9 HTTP/1.1
Host: api.ceevo.com
Authorization: Bearer access_token_xxxxxxxxxx
Content-Type: application/json

Sample Response:


HTTP/1.1 200 Ok
{
  "allowed_use_no": 10,
  "create_date": "2019-05-15T15:45:55Z",
  "current_use_count": 1,
  "delivery_method": "Mobile",
  "device": "Mobile",
  "error_code": 0,
  "error_message": "string",
  "is3d_secure": "Yes",
  "is_success": true,
  "max_allowed_spend": "100.00 EUR",
  "total_card_life_spend": "29.00 EUR",
  "type": "Subscription Service",
  "uin": "16818935-003-1",
  "user_defined_fields": [
    {
      "fieldNumber": 0,
      "fieldValue": "string"
    }
  ],
  "valid_date": "string",
  "validity": "12 Months",
  "virtual_card_status": "Active",
  "virtual_formal_expiry": "2021-11-30",
  "virtual_pan": "414490******0060",
  "workflow_response_dto": {
    "isSuccess": true,
    "requestId": "string",
    "responses": [
      {
        "message": "string",
        "responseCode": "string"
      }
    ]
  },
  "zero_value_auth": "Allowed"
}

Response Codes

Ceevo API uses the following HTTP status codes during RESTful communication:

Code Meaning
200 Ok
201 Object / transaction Created
302 Customer Redirection is required, please check Location header for URL
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your APIKey / access token is wrong.
404 Not Found -- The specified object could not be found.
405 Method Not Allowed -- You tried to access an object with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
500 Internal Server Error -- We have had a problem with our server, please try again later.