NAV
cURL

Overview

Welcome to the Raise API documentation. The Raise API is a powerful tool that enables businesses to integrate digital gift cards seamlessly into their existing business model.

With the Raise API, businesses can instantly drive customer loyalty and reward customers, vendors, and employees while enjoying the flexibility and cost savings of a digital gift card program.

The Raise API is organized around REST. This documentation provides comprehensive guidance on how to interact with our RESTful API, which will always respond in JSON format. Our API allows developers to seamlessly integrate our services into their applications.

If you are a new client or a client migrating from v1 to v2, you can begin with your Initial Integration to get started.

Sandbox & Playground environments are available for testing and development purposes, which don’t affect your live data. For more information, refer to the Raise Environments section.

REST

Our API is built on REST principles, providing a standardized approach for communication between clients and servers over the web. By leveraging HTTP methods and status codes, developers can perform CRUD (Create, Read, Update, Delete) operations on resources in a consistent and intuitive manner.

OAuth 2.0 Authentication

The Raise API utilizes OAuth 2.0 for authentication. To authenticate your requests, you will use the Tokens Resource to obtain your token which you will utilize on all subsequent API calls.

Requests

EXAMPLE REQUEST

{
  "data": {
    "type": "resource_type",
    "id": "resource_id",
    "attributes": {
      //.. fields
    }
  }
}

Raise API follows a consistent request structure.

The usual request body has a data object with two keys.








Request with Metadata

EXAMPLE REQUEST WITH METADATA

{
  "data": {
    "type": "resource_type",
    "attributes": {
      //.. mandatory fields

      "metadata": {
        //.. key-value pairs
      }
    }
  }
}

Metadata is a key-value map that can be used to store additional information about a resource.

The metadata is stored as a JSON object in order to save dynamic details on the resource. The keys are strings, and the values are objects with a kind and value field.

Refer to the Transactions Resource for more information.

Responses

EXAMPLE

{
  "data": {
    "type": "resource_type",
    "id": "resource_id",
    "attributes": {
      //.. fields
    }
  }
}

Individual Response

Raise API follows a consistent and predictable response structure.

The response body is a JSON object with a data field. The data field is an object with a type and an attributes field.

The type field is the name of the resource you are trying to access. The attributes field is what you are trying to update or create.




List Response

EXAMPLE LIST RESPONSE

{
  "data": [
    {
      "type": "resource_type",
      "id": "resource_id_1",
      "attributes": {
        //.. fields
      }
    },
    {
      "type": "resource_type",
      "id": "resource_id_2",
      "attributes": {
        //.. fields
      }
    }
  ],
  "meta": {
    "total_results": 2
  }
}

Currency

Raise API supports multiple currencies. The default currency is USD. You can specify the currency in the request headers.

All monetary amounts in the API — request value and response fields such as balance, total, and commission.amount — are integers expressed in the currency's minor unit (its smallest denomination, also called its subunit).

Convert a human-readable amount to minor units with:

value = amount × 10^(decimal_digits)

where decimal_digits depends on the currency:

Responses use the same convention, so a balance of 12300 on a USD card is $123.00. See Supported Currencies for each currency's decimal digits.

Initial Integration

Playground

You can start familiarizing yourself with the Raise API in Playground

Sandbox & Production Environments

To begin an official integration with our API please Contact Us to request more information. Your account manager will walk you through the process of getting further access.

The Sandbox environment is used for testing and development purposes utilizing a combination of test and mocked data.

The Production environment is used for live transactions and data.

Guide

To get started, you need to authenticate your requests.

Servers: Utilize the Tokens Resource to obtain your token which you will utilize on all subsequent API calls.

App/Web: Utilize the Auth Resource to obtain your token which you will utilize on all subsequent API calls.

We recommend that you integrate with the resources in the following order:

Step Required Resource Description
1 true Tokens OR Auth Resource Auth Oauth2 token handling
2 true Brands Resource Retrieve our brand catalog
3 false Categories Resource Optional: Retrieve our brand catalog groupings by category
4 false Countries Resource Optional: Retrieve our supported countries
5 true Transactions Resource Purchase gift cards
6 true Cards Resource Retrieve gift card details and take actions on the cards such as balance checks, etc.

Raise Environments

Raise provides two environments for testing and development purposes.

Playground Environment

Our playground environment is publicly accessible and can be utilized for a Proof of Concept integration prior to any formal agreements being made. We provide a fixed set of credentials to use this API. A Postman collection is available here.

Environment Availability URL
API Public https://playground-api.raise.com/business/v2

Playground Credentials

To use the playground environment, you can use the following credentials:

Name Value
Client ID fff75433-ffff-4fff-b625-c54e684dffff
Client Secret sandbox-client-secret-string

Refer to the Tokens Resource to learn how to use these credentials to make authenticated requests to the API.

Characteristics

Sandbox Environment

Registered Clients use the Sandbox environment for testing and development purposes. In Sandbox, all operations and data are production-like.

Environment type Availability URL
API Registered Clients https://sandbox-commerce-api.raise.com/business/v2
Portal Registered Clients https://sandbox-portal.raise.com

Credentials

To start using the sandbox environment, please visit Initial Integration to get started. Manage your sandbox credentials by visiting the Raise Sandbox Portal.

Characteristics

Production Environment

Registered Clients use the production environment for production purposes.

Environment type Availability URL
API Registered Clients https://commerce-api.raise.com/business/v2
Portal Registered Clients https://portal.raise.com

Credentials

Manage your production credentials by visiting the Raise Client Portal.

Characteristics

Tokens Resource

Token Integration: Integrating with our OAuth2 "tokens" resource is seamless. Follow these steps to incorporate token handling into your application:

  1. Authentication: Use your client ID and secret key to authenticate requests to the OAuth2 "tokens" endpoint.
  2. Token Retrieval: Upon successful authentication, you'll receive an OAuth2 token from the "tokens" endpoint.
  3. Token Usage: Incorporate the obtained token into subsequent API requests by including it in the Authorization header using the Bearer authentication scheme.
  4. Token Renewal: Regularly refresh your tokens to maintain their validity prior to their expiration.
    • To refresh your token simply call POST tokens to request a new token prior to the expiration of your last token. The current expiration time is 15 minutes. This duration may change in the future, therefore it is recommended to refresh your token prior to the expiration time provided.
    • Your token will remain active until the expires_at Unix timestamp in order to enable overlapping tokens.

POST Tokens

EXAMPLE POST TOKEN REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/tokens' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "tokens",
    "attributes": {
      "type": "BEARER"
    }
  }
}'

EXAMPLE POST TOKEN RESPONSE

{
  "data": {
    "type": "tokens",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
      "type": "BEARER",
      "expires_at": 1714494953
    }
  }
}

POST /business/v2/tokens

Header Required Value Description
Authorization true string Basic Auth with your Client ID and Secret.
Content-Type true string The content type of the request.

This endpoint returns a Bearer token that can be used to authenticate requests to the API.

Token Request

Attribute Required Value Description
type true string The type of token.

Token Type

Value Description
BEARER Bearer authorization token.

POST Token Response

A successful response will have a data object that contains the Token Object.

Token Object

Attribute Type Description
type string Value will always be tokens
id string The unique identifier of the token.
attributes object The token attributes.

Token Attributes

Attribute Value Description
access_token string The token value.
type string The token type.
expires_at integer Unix timestamp for when the token expires.

Auth Resource

Key Pair Authentication

Key Pair authentication is a method that allows the mobile app to sign a nonce with the customer's private key which is then verified by Raise using the customer's public key.

EXAMPLE KEY PAIR POST AUTH METHODS REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/auth/methods' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--header 'X-Country: US' \
--header 'X-CustomerID: 123456' \
--data-raw '{
  "data": {
    "type": "auth/methods",
    "attributes": {
      "type": "SR25519_KEY_PAIR",
      "method": "0x8ca7f551da8775159c2ac65b26e3efefad06e9676cbedc3fa05e2c3801b2b87e"
    }
  }
}'

EXAMPLE KEY PAIR POST AUTH METHODS RESPONSE

{
  "data": {
    "type": "auth/methods",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "type": "SR25519_KEY_PAIR", // or RSA_KEY_PAIR
      "nonce": "0x18b021c8d8de3ac1d1fd5500c034df9f5b94567893b70b62324c3e0a784521e4"
    }
  }
}

EXAMPLE TOTP POST AUTH METHODS REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/auth/methods' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--header 'X-Country: US' \
--header 'X-CustomerID: 123456' \
--data-raw '{
  "data": {
    "type": "auth/methods",
    "attributes": {
      "type": "TOTP"
    }
  }
}'

EXAMPLE TOTP POST AUTH METHODS RESPONSE

{
  "data": {
    "type": "auth/methods",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "type": "TOTP",
      "qr_code_image": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABaElEQVR42mL8//8/AyUY"
    }
  }
}

EXAMPLE SMS POST AUTH METHODS REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/auth/methods' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--header 'X-Country: US' \
--header 'X-CustomerID: 123456' \
--data-raw '{
  "data": {
    "type": "auth/methods",
    "attributes": {
      "type": "SMS",
      "method": "2345678901"
    }
  }
}'

EXAMPLE SMS POST AUTH METHODS RESPONSE

{
  "data": {
    "type": "auth/methods",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "type": "SMS",
      "method": "2345678901"
    }
  }
}

New Key Pair Authentication

New Key Pair Diagram

Existing Key Pair Authentication

Existing Key Pair Diagram

SMS Authentication

SMS authentication is a method that allows customers to receive a verification code via SMS to authenticate themselves.

SMS Diagram

TOTP Authentication

TOTP authentication is a method that allows customers to receive a qr code image to be saved to an authenticator app, which generates timebound verification codes.

TOTP Diagram

Auth Methods Resource

The auth methods endpoints are used to manage the authentication methods for a customer.

POST Auth Methods

POST /business/v2/auth/methods

Header Required Value Description
Authorization true string Basic Auth with your Client ID and Secret.
Content-Type true string The content type of the request.
X-Country false string ISO 3166-1 alpha-2 country code for the transaction. Default is US.
X-CustomerID true string The customer ID.

This endpoint is used to create a new authentication method for a customer. An error will be returned if the customer already has an authentication method set. Depending on the method type use the appropriate request body SR25519 or RSA Key Pair Auth Method Request, SMS Auth Method Request or TOTP Auth Method Request.

POST Auth Methods Response

A successful response will have a data object that contains the Auth Methods Object.

Reference Error Response for a list of possible errors and their descriptions.

PATCH Auth Methods

EXAMPLE PATCH AUTH METHODS REQUEST

curl --location --request PATCH 'https://playground-api.raise.com/business/v2/auth/methods/fff75433-ffff-4fff-b625-c5423tk90d' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "auth/methods",
    "attributes": {
      "type": "TOTP"
    }
  }
}'

EXAMPLE PATCH AUTH METHODS RESPONSE

{
  "data": {
    "type": "auth/methods",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "type": "TOTP",
      "qr_code_image": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABaElEQVR42mL8//8/AyUY"
    }
  }
}

PATCH /business/v2/auth/methods/:id

Header Required Value Description
Authorization true string Bearer token.
Content-Type true string The content type of the request.
X-Country false string ISO 3166-1 alpha-2 country code for the transaction. Default is US.

This endpoint is used to update the authentication method for a customer. Depending on the method type use the appropriate request body SR25519 or RSA Key Pair Auth Method Request, SMS Auth Method Request or TOTP Auth Method Request.

PATCH Auth Methods Response

A successful response will have a data object that contains the Auth Methods Object.

Reference Error Response for a list of possible errors and their descriptions.

Auth Methods Object

EXAMPLE SR25519 KEY PAIR GENERATION

const { schnorrkel } = require('@polkadot/util-crypto');

function generateKeyPair() {
  // Generate SR25519 key pair
  const { publicKey, secretKey } = await schnorrkel.generateKeypair();

  // Encode public key to hexadecimal string
  const srPublicKeyHex = publicKey.toString("hex");

  return { srPrivateKey: secretKey, srPublicKeyHex };
}

EXAMPLE RSA KEY PAIR GENERATION

const crypto = require("crypto");

// Function to generate RSA key pair and hex encode public key
function generateKeyPair() {
  const { privateKey, publicKey } = crypto.generateKeyPairSync("rsa", {
    modulusLength: 2048, // RSA key size in bits
    publicKeyEncoding: {
      type: "spki", // SubjectPublicKeyInfo (SPKI)
      format: "pem", // PEM format
    },
    privateKeyEncoding: {
      type: "pkcs8", // PrivateKeyInfo (PKCS#8)
      format: "pem", // PEM format
    },
  });

  // Encode public key to Hexadecimal
  const publicKeyHex = publicKey.toString("hex");

  // publicKeyHex will then be used as the `method` in the request body
  return { privateKey, publicKey: publicKeyHex };
}
Attribute Type Description
type string Value will always be auth/methods
id string The unique identifier of the method.
attributes object The method attributes.

Key Pair Auth Method Request

Attribute Required Value Description
type true string The type of method.
method true string Hex encoded public key.

SMS Auth Method Request

Attribute Required Value Description
type true string The type of method.
method true string The phone number to send verification codes to.
verification_type false string The verification type. This is only required for types that support more than one verification type. Most types only support a single verification type so this field is not required.

TOTP Auth Method Request

Attribute Required Value Description
type true string The type of method.

Auth Methods Attributes

Attribute Value Description
type string The type of method.
method string The associated method to the type if applicable.
verification_type string The verification type.
qr_code_image string The base64 encoded qr code image for TOTP method. This should be rendered to the user in order for them to add to an authenticator app

Auth Type

Value Description
SR25519_KEY_PAIR SR25519 Key Pair method, will receive a nonce to be signed by the private key.
RSA_KEY_PAIR RSA Key Pair method, will receive a nonce to be signed by the private key.
SMS SMS method, will receive a text message with a code.
TOTP TOTP method, will receive a QR image on creation to be saved to an authenticator app.

Verification Type

Value Description
NONCE The auth method will be verified via a 32 bit nonce this is used in conjunction with the SIGNED_CHALLENGE
SIGNED_CHALLENGE The auth method will be verified via a signed challenge. This will be created by signing the NONCE with the customer's private key.
CODE The auth method will be verified via verification code.

Auth Tokens Resource

Token Integration: Integrating with our OAuth2 auth resource is seamless. Follow these steps to incorporate token handling into your application:

  1. Authentication: Use your client ID and secret key to authenticate requests to the OAuth2 "auth tokens" endpoint.
  2. Ensure you include the ID of your customer in the request headers.
  3. Token Retrieval: Upon successful authentication, you'll receive an OAuth2 token from the "auth tokens" endpoint.
  4. Token Usage: Incorporate the obtained token into subsequent API requests by including it in the Authorization header using the Bearer authentication scheme.
  5. Token Renewal: Regularly refresh your tokens to maintain their validity prior to their expiration.
    • To refresh your token simply call the POST auth refresh to request a new token prior to the expiration of your last token. The current expiration time is 6 months. This duration may change in the future, therefore it is recommended to refresh your token prior to the expiration time provided.
    • Your token will remain active until the expires_at Unix timestamp in order to enable overlapping tokens.

POST Auth Tokens

EXAMPLE SR25519 KEY PAIR NONCE SIGNING

const crypto = require("crypto");
const merlin = require("merlin");

function signChallenge(challengeNonce, privateKey) {
  // Decode challengeNonce from hexadecimal string
  const cn = Buffer.from(challengeNonce, "hex");

  // Create a new transcript
  const transcript = new merlin.Transcript("raise-auth");
  transcript.appendMessage(Buffer.from("challenge-nonce"), cn);

  // Sign the transcript with the private key
  const signature = privateKey.sign(transcript);

  // Encode the signature to hexadecimal string
  const sigHex = signature.toString("hex");

  return sigHex;
}

EXAMPLE RSA KEY PAIR NONCE SIGNING

function signChallenge(challengeNonce, privateKey) {
  const signer = crypto.createSign("RSA-SHA256"); // Use "RSA-SHA256" for RSA signatures
  signer.update(challengeNonce);
  const signature = signer.sign(privateKey, "hex");

  // The signature will be hex encoded, and should be used as the `signed_nonce` in the request body
  return signature;
}

EXAMPLE KEY PAIR GENERATE NONCE POST TOKEN REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/tokens' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--header 'X-Country: US' \
--header 'X-CustomerID: 123456' \
--data-raw '{
  "data": {
    "type": "auth/tokens",
    "attributes": {
      "action": "GENERATE_NONCE"
    }
  }
}'

EXAMPLE KEY PAIR GENERATE NONCE POST TOKEN RESPONSE

{
  "data": {
    "type": "auth/tokens",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "type": "SR25519_KEY_PAIR",
      "nonce": "0x18b021c8d8de3ac1d1fd5500c034df9f5b94567893b70b62324c3e0a784521e4"
    }
  }
}

EXAMPLE KEY PAIR VALIDATE SIGNED NONCE POST TOKEN REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/tokens' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--header 'X-Country: US' \
--header 'X-CustomerID: 123456' \
--data-raw '{
  "data": {
    "type": "auth/tokens",
    "attributes": {
      "action": "VALIDATE_VERIFICATION",
      "signed_nonce": "0x18b021c8d8de3ac1d1fd5500c034df9f5b94567893b70b62324c3e0a784asdfg"
    }
  }
}'

EXAMPLE SMS AND TOTP VALIDATE VERIFICATION POST TOKEN REQUEST

curl --location --request POST 'https://playground-api.raise.com/business/v2/tokens' \
-u 'client-id:sandbox-client-secret-string' \
--header 'Content-Type: application/json' \
--header 'X-CustomerID: 123456' \
--data-raw '{
  "data": {
    "type": "auth/tokens",
    "attributes": {
      "action": "VALIDATE_VERIFICATION",
      "code": "123456"
    }
  }
}'

EXAMPLE VALIDATE VERIFICATION & REFRESH POST TOKEN RESPONSE

{
  "data": {
    "type": "auth/tokens",
    "id": "fff75433-ffff-4fff-b625-c5423tk90d",
    "attributes": {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
      "type": "BEARER",
      "expires_at": 1714494953
    }
  }
}

POST /business/v2/auth/tokens

Header Required Value Description
Authorization true string Basic Auth with your Client ID and Secret.
Content-Type true string The content type of the request.
X-Country false string ISO 3166-1 alpha-2 country code for the customer. Default is US.
X-CustomerID true string The customer ID.

The initial request to this endpoint with the correct type set will send a verification to the customer's authentication method. The customer will receive a verification code that they will need to provide in the next request to the POST Auth Tokens endpoint.

For customers with a TOTP method, the code should be set on the initial request, which will then return the token in the response.

This endpoint returns a Bearer token that can be used to authenticate requests to the API.

Auth Token Request

Attribute Required Value Description
action true string The desired action of token request.
code false string The verification code provided by the customer. Required for SMS and TOTP.
signed_nonce false string The hex encoded bytes signed nonce provided by the customer. Required for RSA Key Pair.

POST Token Response

A successful response will have a data object that contains the Token Object.

Token Object

Attribute Type Description
id string The unique identifier of the token.
type string Value will always be tokens
attributes object The token attributes.

Token Attributes

Attribute Value Description
token string The token value.
type string The token type.
expires_at integer Unix timestamp for when the token expires.
nonce string The hex encoded bytes challenge nonce value. Ensure to hex decode to bytes prior to generating signed nonce with private key.

Auth Token Action

Value Description
GENERATE_NONCE Generates a nonce for the customer to sign.
SEND_VERIFICATION Sends a verification to the customer's authentication method.
VALIDATE_VERIFICATION Validates the verification code provided by the customer.
REFRESH Refreshes the token.

Auth Token Type

Value Description
BEARER Bearer authorization token.

Balance Resource

Returns your fund balance for purchasing gift cards through the API (available, reserved, and pending amounts). All balance amounts are always in USD, as integers in cents (hundredths of a US dollar). The X-Currency header does not change this; it applies to other parts of the API, not these fields.

GET Balance

EXAMPLE REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/balance' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'X-Country: US' \
--header 'X-Currency: USD'

EXAMPLE RESPONSE

{
  "data": {
    "type": "balance",
    "id": "c7770f32-0034-4562-b504-a1b46d21072c",
    "attributes": {
      "available_balance": 100000,
      "reserved_balance": 2500,
      "pending_balance": 0
    }
  }
}

GET /business/v2/balance

Header Required Value Description
Authorization true string Bearer token from the Tokens Resource.
X-Country false string ISO 3166-1 alpha-2 country code. Default is US.
X-Currency false string ISO 4217 currency code for requests that honor it. Balance fields are always USD regardless of this header.

Balance response

Field Description
data One balance resource: type, id, attributes (available_balance, reserved_balance, pending_balance) — each amount is USD cents.

See Error Response for errors.

Brands Resource

The brands endpoints support live querying for the most up to date information. However, we recommend caching the brands within your application and refreshing them every hour to ensure the best performance.

You will use this brand to create transactions and allow users to browse available brands.

International

Brands are separated by country and currency. Amazon US is a different brand than Amazon UK. However they will have the same group_id. This is applicable to all brands. The names of the brands will commonly match however country code and currency will be different amongst other country specific attributes.

When creating a transaction for a brand, the X-Country and X-Currency headers must match the brand's country and currency. See Transactions → International Orders for details.

GET Brand

EXAMPLE GET BRAND REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/brands/a5daa05b-bd95-4d3d-94b5-0ea26480a7e7' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'

EXAMPLE GET BRAND RESPONSE

{
  "data": {
    "type": "brands",
    "id": "a5daa05b-bd95-4d3d-94b5-0ea26480a7e7",
    "attributes": {
      //.. reference The Brand Object
    }
  }
}

GET /business/v2/brands/:id

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.

This brand endpoint returns a single brand object, which can be used to display detailed information about the brand.

GET Brand Response

The response will have a data object that contains the Brand Object

Reference Error Response for a list of possible errors and their descriptions.

GET Brands

EXAMPLE GET BRANDS REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/brands' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'X-Country: US' \
--header 'X-Currency: USD'

EXAMPLE GET BRANDS RESPONSE

{
  "data": [
    {
      "type": "brands",
      "id": "a5daa05b-bd95-4d3d-94b5-0ea26480a7e7",
      "attributes": {
        //.. reference The Brand Object
      }
    },
    {
      "type": "brands",
      "id": "a5asdf5b-bd95-4d3d-94b5-0ea26480a7e2",
      "attributes": {
        //.. reference The Brand Object
      }
    }
    // .. more brands
  ],
  "meta": {
    "total_results": 2
  }
}

GET /business/v2/brands

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.
X-Country false string The country code for the brands. This ensures brands are returned for the proper context. Default is US.
X-Currency false string The currency code for the brands. This ensures brands are returned for the proper context. Default is USD.

This brand endpoint returns a list of brands. The brands are paginated and can be sorted and searched.

Pagination and sorting

This endpoint supports pagination, sorting, and searching operations. All search and pagination parameters are optional and will utilize the default values if not provided.

Attribute Value Description
query string The value passed will be used to query for brands by name, the value must be at least 3 characters in length, it is case insensitive, and will filter out special characters.
character character Queries all brands that start with the character provided. a
category category Queries all brands by the provided category.
ids array of uuidv4 Queries all brands by the provided ids.

Pagination

Attribute Value Description
page[size] integer Returns the specified number of results per page. The maximum results allowed per page are 500. Default is 10.
page[number] integer The first page is 0. If 5 is specified the 6th page will be returned. Default is 0.

Sorting

Attribute Value Description
sort[field] string Sorts by name or popularity.
sort[order] string Sort ASC or DESC.

GET Brands Response

The response will have a data array that contains the Brand Objects and a meta object that contains total_results which is the total number of resources. This can be utilized to determine the number of pages available based on the page[size] parameter.

Reference Error Response for a list of possible errors and their descriptions.

Shared Brand Schemas

EXAMPLE BRAND OBJECT

{
  "type": "brands",
  "id": "a5daa05b-bd95-4d3d-94b5-0ea26480a7e7",
  "attributes": {
    "group_id": "2345a05b-bd95-4d3d-94b5-0ea26480a788",
    "icon_url": "https://www.raise.com/raise-content/Raise+Brand+Tiles/64X64/a5daa05b-bd95-4d3d-94b5-0ea26480a7e7.png",
    "name": "Amazon",
    "currency": "USD",
    "country": "US",
    "commission_rate": 400,
    "description": "Amazon.com Gift Cards* never expire and can be redeemed towards millions of items at www.amazon.com",
    "terms": "The Amazon.com Conditions of Use apply. No fees apply to Gift Cards. We reserve the right to require additional verification of your identity, Gift Card or account ownership, or provision of an additional payment instrument, before you are able to apply a Gift Card to your account or your Amazon.com Balance to a purchase. When you purchase, receive, or apply a Gift Card to your account, or your Amazon.com Balance to a purchase, you agree that the laws of the State of Washington, without regard to principles of conflict of laws, will govern these terms and conditions and any dispute that may arise between you and ACI Gift Cards LLC, and its affiliates related to your use of a Gift Card or your Amazon.com Balance. We reserve the right to change these terms and conditions without notice, from time to time at our sole discretion. All terms and conditions are applicable to the extent permitted by law. If any of these terms and conditions are deemed invalid, void, or for any reason unenforceable, that unenforceable term will be deemed severable and will not affect the validity and enforceability of any remaining terms and conditions.",
    "merchant_url": "https://www.amazon.com/",
    "balance_check_url": "https://www.amazon.com/gp/css/gc/balance",
    "redemption_config": {
      "disclaimer": "",
      "methods": [
        {
          "info": "To redeem your gift card, follow these steps:\n1.\tVisit www.amazon.com/redeem\n2.\tEnter the Claim Code when prompted.\n3.\tGift card funds will be applied automatically to eligible orders during the checkout process.\n4.\tYou must pay for any remaining balance on your order with another payment method.\n\nYour gift card claim code may also be entered when prompted during checkout. To redeem your gift card using the Amazon.com 1-Click® service, first add the gift card funds to Your Account.\nIf you have questions about redeeming your gift card, please visit www.amazon.com/gc-redeem.",
          "kind": "ONLINE"
        }
      ]
    },
    "transaction_config": {
      "disclaimer": "Restrictions apply, see [amazon.com/gc-legal](amazon.com/gc-legal)",
      "variable_load": {
        "increment": 1,
        "minimum_amount": 500,
        "maximum_amount": 199999
      }
    },
    "categories": ["ENTERTAINMENT", "HOME"]
  }
}

Brand Object

Attribute Type Description
type string Value will always be brands
id uuidv4 The unique identifier of the brand.
attributes object The brand attributes.

Brand Attributes

Attribute Type Description
group_id uuidv4 Unique identifier for the brand group. Example: Amazon US and Amazon UK are in the same group.
name string Name of the brand.
commission_rate integer The commission rate that the client will earn on the sale of the brand. This value is in basis point format. Example: 400 = 4%
description string Description of the brand.
currency string ISO 4217 currency code for the brand.
country string ISO 3166-1 alpha-2 country code for the brand.
icon_url string URL to the brand's icon.
faceplate_url string URL to the brand's faceplate. The faceplate is a rectangle gift card image.
balance_check_url string URL to manually check the balance of the brand's gift card. This can be utilized in case automatic balance checks are not available. If no balance check url is available, it will default to match the merchant url.
balance_checks_supported boolean Indicates if the brand supports automatic balance checks.
merchant_url string URL to the brand's website.
terms string Legal terms for the brand.
transaction_config object Configuration for the purchase transaction of a brand's gift cards.
redemption_config object Configuration for the brand's gift card redemption.
categories array Categories for the brand.

Transaction Config

Note: variable_load and fixed_load are mutually exclusive. A transaction config will have one or the other.

Attribute Type Description
disclaimer string Disclaimer for the brand's gift card transaction.
variable_load object Configuration for the variable load of the brand's gift cards.
fixed_load object Configuration for the fixed load of the brand's gift cards.

Variable Load

Attribute Type Description
increment integer The increment amount for variable loads of the brand's gift cards. By default, this is set to 1 currency increment.
minimum_amount integer The minimum amount, in the brand's applicable currency, for variable loads of the brand's gift cards. Reference Currency
maximum_amount integer The maximum amount, in the brand's applicable currency, for variable loads of the brand's gift cards. Reference Currency

Fixed Load

Attribute Type Description
amounts array of integers The fixed load amounts, in the brand's applicable currency, for the brand's gift cards. For USD, this is in cents.

Redemption Config

Attribute Type Description
disclaimer string Disclaimer for the brand's gift card redemption.
methods array Methods for redeeming the brand's gift card.

Redemption Method

Attribute Type Description
info string Information on how to redeem the brand's gift card.
kind string The method of redemption for the brand's gift card.

Redemption Kind

Value Description
ONLINE The brand's gift card can be redeemed online.
IN_STORE The brand's gift card can be redeemed in-store.
APP The brand's gift card can be redeemed in-app.
RESTAURANT The brand's gift card can be redeemed at a restaurant.

Category

Value Description
APPAREL Apparel
AUTOMOTIVE Automotive
BABY_AND_KIDS Baby and Kids
BEAUTY Beauty
DINING_AND_DELIVERY Dining and Delivery
ENTERTAINMENT Entertainment
GROCERY Grocery
HOME Home
PETS Pets
SHOES Shoes
SPORTS_AND_OUTDOORS Sports and Outdoors
TRAVEL Travel

Categories Resource

Categories are a way to group brands together. This resource provides a list of categories that are available to the Raise API.

GET Categories

EXAMPLE GET CATEGORIES REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/categories' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'X-Country: US' \
--header 'X-Currency: USD'

EXAMPLE GET CATEGORIES RESPONSE

{
  "data": [
    {
      "type": "categories",
      "id": "ENTERTAINMENT",
      "attributes": {
        "name": "Entertainment",
        "available_brands": 3
      }
    },
    {
      "type": "categories",
      "id": "GROCERY",
      "attributes": {
        "name": "Groceries",
        "available_brands": 10
      }
    }
    // .. more categories
  ],
  "meta": {
    "total_results": 2
  }
}

GET /business/v2/categories

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.
X-Country false string The country code for the categories. This ensures categories are returned for the proper context. Default is US.
X-Currency false string The currency code for the categories. This ensures categories are returned for the proper context. Default is USD.

This category endpoint returns a list of categories. The categories can be sorted as needed.

Sorting

Attribute Value Description
sort[order] string Sort ASC or DESC

GET Categories Response

The response will have a data array that contains the Category Objects and a meta object that contains total_results which is the total number of resources.

Reference Error Response for a list of possible errors and their descriptions.

Category Object

Attribute Type Description
id string The unique identifier for the category.
name string A user friendly name for the category.
available_brands integer The number of brands available in the category.

Countries Resource

This resource provides the list of countries supported by the Raise API, along with each country's default currency and the number of brands available in that country. For how amounts are represented in each currency, see Supported Currencies.

GET Countries

EXAMPLE GET COUNTRIES REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/countries' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'X-Country: US' \
--header 'X-Currency: USD'

EXAMPLE GET COUNTRIES RESPONSE

{
  "data": [
    {
      "type": "countries",
      "id": "US",
      "attributes": {
        "currency": "USD",
        "available_brands": 832
      }
    },
    {
      "type": "countries",
      "id": "CA",
      "attributes": {
        "currency": "CAD",
        "available_brands": 135
      }
    }
    // .. more countries
  ],
  "meta": {
    "total_results": 2
  }
}

GET /business/v2/countries

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.

This country endpoint returns a list of countries.

GET Countries Response

The response will have a data array that contains the Country Objects and a meta object that contains total_results which is the total number of resources.

Reference Error Response for a list of possible errors and their descriptions.

Country Object

Attribute Type Description
id string ISO 3166-1 alpha-2 country code identifier for the country.
currency string ISO 4217 currency code.
available_brands integer The number of brands available in the country.

Supported Currencies

The Raise API supports the currencies listed below. All monetary amounts are integers expressed in the currency's minor unit (its smallest denomination) — see Currency for the conversion rule.

Convert a human-readable amount to minor units with:

value = amount × 10^(decimal_digits)

Minor units quick reference

The default is 2 decimal digits (multiply the human amount by 100, e.g. USD $123.00 → 12300). The currencies below differ:

Zero-decimal — no subunit; send the whole-unit amount as-is (×1), e.g. JPY ¥123 → 123:

AFN, AMD, BIF, BYR, CLP, COP, CRC, DJF, GNF, HUF, IDR, IQD, IRR, ISK, JPY, KMF, KRW, LAK, LBP, MGA, MMK, MUR, PKR, PYG, RSD, RWF, SOS, SYP, TZS, UGX, UZS, VND, VUV, XAF, XOF, XPF, YER, ZMK, ZMW

Three-decimal — multiply by 1000, e.g. KWD 1.234 → 1234:

BHD, JOD, KWD, LYD, OMR, TND

Full list

Every supported currency, its decimal digits, and the integer to send for one whole unit of that currency.

Code Currency Decimal digits Multiplier "1 unit" → send
AED United Arab Emirates Dirham 2 ×100 100
AFN Afghan Afghani 0 ×1 1
AMD Armenian Dram 0 ×1 1
ANG NL Antillean Guilder 2 ×100 100
AOA Angolan Kwanza 2 ×100 100
ARS Argentine Peso 2 ×100 100
AUD Australian Dollar 2 ×100 100
AWG Aruban Florin 2 ×100 100
AZN Azerbaijani Manat 2 ×100 100
BAM Bosnia-Herzegovina Convertible Mark 2 ×100 100
BBD Barbadian Dollar 2 ×100 100
BDT Bangladeshi Taka 2 ×100 100
BGN Bulgarian Lev 2 ×100 100
BHD Bahraini Dinar 3 ×1000 1000
BIF Burundian Franc 0 ×1 1
BMD Bermudan Dollar 2 ×100 100
BND Brunei Dollar 2 ×100 100
BOB Bolivian Boliviano 2 ×100 100
BRL Brazilian Real 2 ×100 100
BSD Bahamian Dollar 2 ×100 100
BTN Bhutanese Ngultrum 2 ×100 100
BWP Botswanan Pula 2 ×100 100
BYN Belarusian Ruble 2 ×100 100
BYR Belarusian Ruble 0 ×1 1
BZD Belize Dollar 2 ×100 100
CAD Canadian Dollar 2 ×100 100
CDF Congolese Franc 2 ×100 100
CHF Swiss Franc 2 ×100 100
CLF Unidad de Fomento 2 ×100 100
CLP Chilean Peso 0 ×1 1
CNY Chinese Yuan 2 ×100 100
COP Colombian Peso 0 ×1 1
CRC Costa Rican Colón 0 ×1 1
CUC Cuban Convertible Peso 2 ×100 100
CUP Cuban Peso 2 ×100 100
CVE Cape Verdean Escudo 2 ×100 100
CZK Czech Republic Koruna 2 ×100 100
DJF Djiboutian Franc 0 ×1 1
DKK Danish Krone 2 ×100 100
DOP Dominican Peso 2 ×100 100
DZD Algerian Dinar 2 ×100 100
EGP Egyptian Pound 2 ×100 100
ERN Eritrean Nakfa 2 ×100 100
ETB Ethiopian Birr 2 ×100 100
EUR Euro 2 ×100 100
FJD Fijian Dollar 2 ×100 100
FKP Falkland Islands Pound 2 ×100 100
GBP British Pound Sterling 2 ×100 100
GEL Georgian Lari 2 ×100 100
GGP Guernsey pound 2 ×100 100
GHS Ghanaian Cedi 2 ×100 100
GIP Gibraltar Pound 2 ×100 100
GMD Gambian Dalasi 2 ×100 100
GNF Guinean Franc 0 ×1 1
GTQ Guatemalan Quetzal 2 ×100 100
GYD Guyanese Dollar 2 ×100 100
HKD Hong Kong Dollar 2 ×100 100
HNL Honduran Lempira 2 ×100 100
HRK Croatian Kuna 2 ×100 100
HTG Haitian Gourde 2 ×100 100
HUF Hungarian Forint 0 ×1 1
IDR Indonesian Rupiah 0 ×1 1
ILS Israeli New Sheqel 2 ×100 100
IMP Manx pound 2 ×100 100
INR Indian Rupee 2 ×100 100
IQD Iraqi Dinar 0 ×1 1
IRR Iranian Rial 0 ×1 1
ISK Icelandic Króna 0 ×1 1
JEP Jersey pound 2 ×100 100
JMD Jamaican Dollar 2 ×100 100
JOD Jordanian Dinar 3 ×1000 1000
JPY Japanese Yen 0 ×1 1
KES Kenyan Shilling 2 ×100 100
KGS Kyrgyzstani Som 2 ×100 100
KHR Cambodian Riel 2 ×100 100
KMF Comorian Franc 0 ×1 1
KPW North Korean Won 2 ×100 100
KRW South Korean Won 0 ×1 1
KWD Kuwaiti Dinar 3 ×1000 1000
KYD Cayman Islands Dollar 2 ×100 100
KZT Kazakhstani Tenge 2 ×100 100
LAK Laotian Kip 0 ×1 1
LBP Lebanese Pound 0 ×1 1
LKR Sri Lankan Rupee 2 ×100 100
LRD Liberian Dollar 2 ×100 100
LSL Lesotho Loti 2 ×100 100
LTL Lithuanian Litas 2 ×100 100
LVL Latvian Lats 2 ×100 100
LYD Libyan Dinar 3 ×1000 1000
MAD Moroccan Dirham 2 ×100 100
MDL Moldovan Leu 2 ×100 100
MGA Malagasy Ariary 0 ×1 1
MKD Macedonian Denar 2 ×100 100
MMK Myanmar Kyat 0 ×1 1
MNT Mongolian Tugrik 2 ×100 100
MOP Macanese Pataca 2 ×100 100
MRO Mauritanian ouguiya 2 ×100 100
MRU Mauritanian ouguiya 2 ×100 100
MUR Mauritian Rupee 0 ×1 1
MVR Maldivian Rufiyaa 2 ×100 100
MWK Malawian Kwacha 2 ×100 100
MXN Mexican Peso 2 ×100 100
MYR Malaysian Ringgit 2 ×100 100
MZN Mozambican Metical 2 ×100 100
NAD Namibian Dollar 2 ×100 100
NGN Nigerian Naira 2 ×100 100
NIO Nicaraguan Córdoba 2 ×100 100
NOK Norwegian Krone 2 ×100 100
NPR Nepalese Rupee 2 ×100 100
NZD New Zealand Dollar 2 ×100 100
OMR Omani Rial 3 ×1000 1000
PAB Panamanian Balboa 2 ×100 100
PEN Peruvian Nuevo Sol 2 ×100 100
PGK Papua New Guinean Kina 2 ×100 100
PHP Philippine Peso 2 ×100 100
PKR Pakistani Rupee 0 ×1 1
PLN Polish Zloty 2 ×100 100
PYG Paraguayan Guarani 0 ×1 1
QAR Qatari Rial 2 ×100 100
RON Romanian Leu 2 ×100 100
RSD Serbian Dinar 0 ×1 1
RUB Russian Ruble 2 ×100 100
RWF Rwandan Franc 0 ×1 1
SAR Saudi Riyal 2 ×100 100
SBD Solomon Islands Dollar 2 ×100 100
SCR Seychellois Rupee 2 ×100 100
SDG Sudanese Pound 2 ×100 100
SEK Swedish Krona 2 ×100 100
SGD Singapore Dollar 2 ×100 100
SHP Saint Helena Pound 2 ×100 100
SLE Sierra Leonean leone 2 ×100 100
SLL Sierra Leonean Leone 2 ×100 100
SOS Somali Shilling 0 ×1 1
SRD Surinamese Dollar 2 ×100 100
STD São Tomé and Príncipe dobra 2 ×100 100
STN São Tomé and Príncipe dobra 2 ×100 100
SVC Salvadoran Colón 2 ×100 100
SYP Syrian Pound 0 ×1 1
SZL Swazi Lilangeni 2 ×100 100
THB Thai Baht 2 ×100 100
TJS Tajikistani Somoni 2 ×100 100
TMT Turkmenistani Manat 2 ×100 100
TND Tunisian Dinar 3 ×1000 1000
TOP Tongan Paʻanga 2 ×100 100
TRY Turkish Lira 2 ×100 100
TTD Trinidad and Tobago Dollar 2 ×100 100
TWD New Taiwan Dollar 2 ×100 100
TZS Tanzanian Shilling 0 ×1 1
UAH Ukrainian Hryvnia 2 ×100 100
UGX Ugandan Shilling 0 ×1 1
USD US Dollar 2 ×100 100
UYU Uruguayan Peso 2 ×100 100
UZS Uzbekistan Som 0 ×1 1
VEF Venezuelan Bolívar 2 ×100 100
VES Venezuelan Bolívar 2 ×100 100
VND Vietnamese Dong 0 ×1 1
VUV Vanuatu Vatu 0 ×1 1
WST Samoan Tala 2 ×100 100
XAF CFA Franc BEAC 0 ×1 1
XCD East Caribbean Dollar 2 ×100 100
XCG Caribbean guilder 2 ×100 100
XDR Special drawing rights 2 ×100 100
XOF CFA Franc BCEAO 0 ×1 1
XPF CFP Franc 0 ×1 1
YER Yemeni Rial 0 ×1 1
ZAR South African Rand 2 ×100 100
ZMK Zambian Kwacha 0 ×1 1
ZMW Zambian Kwacha 0 ×1 1
ZWG Zimbabwe Gold 2 ×100 100
ZWL Zimbabwean dollar 2 ×100 100

Transactions Resource

The transaction resource allows you to create, retrieve, and list transactions. Transactions are the core of the Raise API and are used to create gift card orders.

POST /business/v2/transactions

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.
Content-Type true string The content type of the request. Default is application/json.
X-Country false string ISO 3166-1 alpha-2 country code for the transaction. Default is US.
X-Currency false string ISO 4217 currency code for the transaction. Default is USD.

This transaction endpoint creates a new transaction. The transaction value is deducted from the client's account balance.

POST Transaction Enterprise Clients

EXAMPLE POST TRANSACTION REQUEST ENTERPRISE CLIENTS

curl --location --request POST 'https://playground-api.raise.com/business/v2/transactions' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'X-Country: US' \
--header 'X-Currency: USD' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "transactions",
    "attributes": {
      "cards": [{
        "brand_id": "dd231d64-4b34-48e0-b6a7-ca1faab219a1",
        "value": 2500,
        "quantity": 1
      }],
      "customer": {
        "id": "c7770f32-0034-4562-b504-a1b46d21072c"
      },
      "client_order_id": "order-1234"
    }
  }
}'

Transaction Request Enterprise Clients

Attribute Required Type Description
cards true array The cards requested in the transaction. Currently only the first card request object in the array will be processed, future updates will unlock the ability to pass additional cards.
customer true object The customer of the transaction. ONLY required for clients using the Tokens Resource, optional for all other implementations.
client_order_id true string The client's order ID. This is a unique ID that is used to reference the order within your system and is used as an idempotency key.
metadata false object The metadata for the transaction.

POST Transaction Web3 Clients

EXAMPLE POST TRANSACTION REQUEST WEB3 CLIENTS

curl --location --request POST 'https://playground-api.raise.com/business/v2/transactions' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'X-Country: US' \
--header 'X-Currency: USD' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "transactions",
    "attributes": {
      "cards": [{
        "brand_id": "dd231d64-4b34-48e0-b6a7-ca1faab219a1",
        "value": 2500,
        "quantity": 1
      }],
      "customer": {
        "id": "c7770f32-0034-4562-b504-a1b46d21072c"
      },
      "payment_details": {
        "crypto_details": {
          "network": "solana",
          "asset": "sol",
          "wallet_address": "somewalletaddresshere"
        }
      },
      "client_order_id": "order-1234"
    }
  }
}'

Transaction Request Web3 Clients

Attribute Required Type Description
cards true array The cards requested in the transaction. Currently only the first card request object in the array will be processed, future updates will unlock the ability to pass additional cards.
customer true object The customer of the transaction. ONLY required for clients using the Tokens Resource, optional for all other implementations.
client_order_id true string The client's order ID. This is a unique ID that is used to reference the order within your system and is used as an idempotency key.
payment_details true object The payment details of your customer
metadata false object The metadata for the transaction.

EXAMPLE POST TRANSACTION RESPONSE

{
  "data": {
    "type": "transactions",
    "id": "T1234567890123",
    "attributes": {
      // .. Refer to the Transaction Object
    }
  }
}

International Orders

The Raise API supports international orders. Each brand belongs to a single country and currency (see Brands → International). When you create a transaction, the X-Country and X-Currency headers must match the country and currency of the brand being ordered. For example, to order a brand whose country is GB and currency is GBP, send X-Country: GB and X-Currency: GBP. Amounts such as the card value are expressed in that currency's minor unit — see Currency for the conversion rule.

If either the country or the currency does not match the brand, the request is rejected as a Bad Request (ErrCodeBadRequest).

Idempotency

Idempotency ensures safe retrying of requests without unintended duplicate operations. In case of a connection error, repeating the request with the same client_order_id poses no risk of creating a duplicate transaction.

Raise’s idempotency mechanism stores the status code and body of the initial request made for any given client_order_id, regardless of success or failure. Subsequent requests with the same ID yield the same result, including 500 errors.

Results are saved only after endpoint execution begins. Failed validation or conflicts with concurrent requests prevent the saving of idempotent results, allowing for retrying.

Idempotency facilitates request retrying without creating new transactions. If a request fails, retry it with the same client_order_id for an identical response as the original request.

Transaction Request Cards

Attribute Required Type Description
brand_id true uuidv4 The unique identifier of the brand.
value true integer The value of the card. Reference Currency
quantity true integer The quantity of cards.

Transaction Request Customer

Attribute Required Type Description
id true string The customer's external ID. This is the ID you use within your system to identify your user. ONLY applicable for clients using the Tokens Resource, this attribute is ignored for all other implementations.
email false string The customer's email address.
phone_number false string The customer's phone number.
first_name false string The customer's first name.
last_name false string The customer's last name.

Transaction Request Payment Details

Attribute Required Type Description
crypto_details true object The crypto payment details for the transaction. Refer to Crypto Details for more information.

Transaction Request Payment Details Crypto Details

Attribute Required Type Description
asset true string The crypto asset the customer used to pay for the transaction.
network true string The crypto network the customer used to pay for the transaction.
wallet_address true string The crypto wallet address the customer used to pay for the transaction.

POST Transaction Response

A successful response will have a data object that contains the Transaction Object.

Reference Error Response for a list of possible errors and their descriptions.

Transaction Flow

Transaction Diagram

GET Transaction

EXAMPLE GET TRANSACTION REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/transactions/TCYYLJDBCXTE6C' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'

EXAMPLE GET TRANSACTION RESPONSE

{
  "data": {
    "type": "transactions",
    "id": "TCYYLJDBCXTE6C",
    "attributes": {
      // .. Refer to the Transaction Object
    }
  }
}

GET /business/v2/transactions/:id

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.

This transaction endpoint retrieves a transaction by its unique identifier. If the transaction is in a failed state, the related error will be returned.

GET Transaction Response

The response will have a data object that contains the Transaction Object.

Reference Error Response for a list of possible errors and their descriptions.

GET Transactions

EXAMPLE GET TRANSACTIONS REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/transactions' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'

EXAMPLE GET TRANSACTIONS RESPONSE

{
  "data": [
    {
      "type": "transactions",
      "id": "TCYYLJDBCXTE6C",
      "attributes": {
        // .. Refer to the Transaction Object
      }
    }
  ],
  "meta": {
    "total_results": 1
  }
}

GET /business/v2/transactions

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.

This transaction endpoint retrieves a list of transactions. The transactions are paginated and can be sorted and searched.

Pagination and sorting

This endpoint supports pagination, sorting, and searching operations. All search and pagination parameters are optional and will utilize the default values if not provided. Clients using the Auth Resource will only be able to query by the authenticated customer's transactions.

Attribute Required Value Description
ids false array of strings Queries by multiple transaction ids.
customer[id] false string Queries by the provided customer id. ONLY applicable for clients using the Tokens Resource, this attribute is ignored for all other implementations.
client_order_id false string Queries by the provided client order id.
state false string Queries by the provided state.
date_range.start false string (RFC 3339) Lower bound on created_at (UTC) when filtering by date range (see note below).
date_range.end false string (RFC 3339) Upper bound on created_at (UTC) when filtering by date range (see note below).

Date range: omit both parameters to list transactions without a creation-time filter. If you pass either date_range.start or date_range.end, you must pass both. Each value must be a valid RFC 3339 timestamp. Prefer UTC (for example a Z suffix). If you include a numeric offset in the string, the API normalizes the instant to UTC before filtering. date_range.start must not be after date_range.end, and the interval between them must not exceed 90 days.

Pagination

Attribute Value Description
page[size] integer Returns the specified number of results per page. The maximum results allowed per page are 500. Default is 10.
page[number] integer The first page is 0. If 5 is specified the 6th page will be returned. Default is 0.

Sorting

Attribute Value Description
sort_by string Sorts by created_at
sort[order] string Sort ASC or DESC.

GET Transactions Response

The response will have a data array that contains the Transaction Objects and a meta object that contains total_results which is the total number of resources. This can be utilized to determine the number of pages available based on the page[size] parameter. It is important to note that the Transaction Objects returned from GetTransactions do not include the cards array. To retrieve the cards array for a specific transaction, you must call the GetTransaction endpoint.

Reference Error Response for a list of possible errors and their descriptions.

Shared Transaction Schemas

Transaction Object

EXAMPLE TRANSACTION OBJECT

{
  "type": "transactions",
  "id": "TCYYLJDBCXTE6C",
  "attributes": {
    "state": "COMPLETED",
    "total": 2500,
    "total_commission": {
      "amount": 100,
      "rate": 400,
      "currency": "USD"
    },
    "escrow_deduction": {
      "usd_amount": 2400,
      "currency": "USD",
      "exchange_rate_1e6": 1000000,
      "local_amount": 2400
    },
    "country": "US",
    "currency": "USD",
    "customer": {
      "id": "c7770f32-0034-4562-b504-a1b46d21072c"
    },
    "cards": [
      {
        "id": "a27c1e40-8c1f-48b7-b366-5c006abea9cd",
        "brand_id": "dd231d64-4b34-48e0-b6a7-ca1faab219a1",
        "brand_name": "Lowe's",
        "balance": 2500,
        "currency": "USD",
        "number": {
          "label": "Card Number",
          "value": "5281 5281 5281 5281",
          "raw": "5281528152815281"
        },
        "csc": {
          "label": "PIN",
          "value": "1234",
          "raw": "1234"
        },
        "url": {
          "raw": "https://www.vcdelivery.com/vcert/b9ec093b-77cf-4c1e-bdf1-30857a8ed943"
        },
        "barcode": {
          "type": "QR_CODE",
          "value": "5281528152815281"
        },
        "expires_at": "",
        "balance_checks_available": 3,
        "balance_checks_supported": true,
        "commission": {
          "amount": 100,
          "rate": 400,
          "currency": "USD"
        }
      }
    ],
    "client_order_id": "order-1234"
  }
}
Attribute Type Description
type string Value will always be transactions
id string The unique identifier of the transaction.
attributes object The transaction attributes.

Transaction Attributes

Attribute Type Description
state string The state of the transaction.
total integer The total value of the transaction and is associated with the currency specified on the transaction. Reference Currency
total_commission object The total commission of the transaction.
escrow_deduction object The escrow amount deducted from the client's account balance for the transaction.
currency string ISO 4217 currency code for the transaction.
country string ISO 3166-1 alpha-2 country code.
customer object The customer of the transaction.
cards array The cards involved in the transaction. Note: This field is only available when using GetTransaction.
errors array The errors related to the transaction. If applicable.
metadata object The metadata related to the transaction.

Transaction State

Value Description
COMPLETED The transaction is completed.
FAILED The transaction failed. There will be errors populated in the errors array if the transaction is in a failed state.

Customer Object

Attribute Type Description
id string The customer's external ID. This is the ID you use within your system to identify your user. ONLY applicable for clients using the Tokens Resource, this attribute is ignored for all other implementations.
email string The customer's email address.
phone_number string The customer's phone number.
first_name string The customer's first name.
last_name string The customer's last name.

Commission Object

Attribute Type Description
amount integer The commission amount. Reference Currency
rate integer The commission rate in basis point format. This is the percentage of the total amount.
currency string ISO 4217 currency code.

Escrow Deduction Object

The escrow deduction represents the amount deducted from the client's account balance to fund the transaction. It is present on both the Transaction Object and each Card Object.

Attribute Type Description
usd_amount integer The deducted amount in USD. Reference Currency
currency string ISO 4217 currency code of the deduction's local amount.
exchange_rate_1e6 integer The exchange rate used to convert from USD to the local currency, scaled by 1,000,000 (e.g. 1000000 = a 1:1 rate).
local_amount integer The deducted amount in the local currency. Reference Currency

Metadata

Example of a single metadata object:

{
  "metadata": {
    "first_example_field": {
      "kind": "STRING",
      "value": "Customized string"
    }
  }
}

Example of multiple metadata objects:

{
  "metadata": {
    "first_example_field": {
      "kind": "STRING",
      "value": "Customized string"
    },
    "second_example_field": {
      "kind": "DATE",
      "value": "2020-05-22T12:33:00+0000"
    }
    // ... additional metadata fields (can be any number of fields).
  }
}

All of the endpoints in the API accept an optional metadata attribute in the request body. Metadata can be used to store additional information about the request.

metadata is defined as a single JSON object or a list of JSON objects,

Each JSON object will be keyed by field_name ( replace field_name with your desired custom name)

The JSON object will also have the following attributes.

Supported Field Types

The following table lists the available metadata field types:

Data Type Description
STRING Any string value, not to exceed 256 characters.
DATE A date value formatted according to the RFC3339 specification.

Metadata Field Name Restrictions

Metadata field names can be any string value with the following restrictions:

Cards Resource

GET Cards

EXAMPLE GET CARDS REQUEST

curl --location --request GET 'https://playground-api.raise.com/business/v2/cards?customer[id]=abc-123' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \

EXAMPLE GET CARDS RESPONSE

{
  "data": [
    {
      "type": "cards",
      "id": "a27c1e40-8c1f-48b7-b366-5c006abea9cd",
      "attributes": {
        // .. Refer to the Card Object
      },
      "relationships": {
        "brands": {
          "data": {
            "type": "brands",
            "id": "id-of-the-brand-associated-with-the-card"
          }
        }
      }
    }
  ],
  "included": [
    {
      "type": "brands",
      "id": "id-of-the-brand-associated-with-the-card",
      "attributes": {
        // .. Refer to the Brand Object
      }
    }
  ],
  "meta": {
    "total_results": 1
  }
}

GET /business/v2/cards

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.

This card endpoint retrieves a list of cards. The cards are paginated and can be sorted and searched.

Pagination and sorting

This endpoint supports pagination, sorting, and searching operations. All search and pagination parameters are optional and will utilize the default values if not provided. Clients using the Auth Resource will only be able to query by the authenticated customer's cards.

Attribute Required Value Description
customer[id] true string Queries by the provided customer id. ONLY required for clients using the Tokens Resource, this attribute is ignored for all other implementations.
id false string Queries by single card id.
transaction_id false string Queries all cards associated to a specific transaction.
state false string Queries by the provided state.

Pagination

Attribute Value Description
page[size] integer Returns the specified number of results per page. The maximum results allowed per page are 500. Default is 10.
page[number] integer The first page is 0. If 5 is specified the 6th page will be returned. Default is 0.

Sorting

Attribute Value Description
sort_by string Sorts by created_at or updated_at.
sort[order] string Sort ASC or DESC.

GET Cards Response

The response will have a data array that contains the Card Objects and a meta object that contains total_results which is the total number of resources. This can be utilized to determine the number of pages available based on the page[size] parameter.

The response may also include an included deduped array that contains the Brand Objects associated with the cards. Which can be referenced from the relationships object on a card.

Reference Error Response for a list of possible errors and their descriptions.

PATCH Card

EXAMPLE PATCH CARD REQUEST

curl --location --request PATCH 'https://playground-api.raise.com/business/v2/cards/a27c1e40-8c1f-48b7-b366-5c006abea9cd' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' \
--header 'Content-Type: application/json' \
--data-raw '{
  "data": {
    "type": "cards",
    "id": "a27c1e40-8c1f-48b7-b366-5c006abea9cd",
    "attributes": {
      "action": "BALANCE_CHECK"
    }
  }
}'

EXAMPLE PATCH CARD RESPONSE

{
  "data": {
    "type": "cards",
    "id": "a27c1e40-8c1f-48b7-b366-5c006abea9cd",
    "attributes": {
      // .. Refer to the Card Object
    }
  }
}

PATCH /business/v2/cards/:id

Header Required Value Description
Authorization true string Bearer token that was received from the Tokens Resource.
Content-Type true string Must be application/json.

This card endpoint updates a card. The card can be updated with a balance check action.

Card Request

Attribute Required Value Description
action true string The action to perform on the card.
balance false integer The balance to update the card with. Only applicable with UPDATE_BALANCE action

Card Request Action

Value Description
BALANCE_CHECK Performs a balance check on the card.
MARK_AS_REDEEMED Updates the card state to REDEEMED and zeros out the recorded balance.
UPDATE_BALANCE Updates the card balance to the value provided.

Shared Card Schemas

Card Object

EXAMPLE CARD OBJECT

{
  "type": "cards",
  "id": "a27c1e40-8c1f-48b7-b366-5c006abea9cd",
  "attributes": {
    "brand_id": "dd231d64-4b34-48e0-b6a7-ca1faab219a1",
    "brand_name": "Lowe's",
    "balance": 2500,
    "currency": "USD",
    "number": {
      "label": "Card Number",
      "value": "5281 5281 5281 5281",
      "raw": "5281528152815281"
    },
    "csc": {
      "label": "PIN",
      "value": "1234",
      "raw": "1234"
    },
    "url": {
      "label": "View Gift Card Details",
      "raw": "https://www.vcdelivery.com/vcert/b9ec093b-77cf-4c1e-bdf1-30857a8ed943"
    },
    "barcode": {
      "type": "QR_CODE",
      "value": "5281528152815281"
    },
    "expires_at": "",
    "balance_checks_available": 3,
    "balance_checks_supported": true,
    "commission": {
      "amount": 100,
      "rate": 400,
      "currency": "USD"
    },
    "escrow_deduction": {
      "usd_amount": 768,
      "currency": "USD",
      "exchange_rate_1e6": 1000000,
      "local_amount": 768
    },
    "state": "ACTIVE",
    "apple_pass_link": "https://commerce-api.raisestaging.com/business/v2/cards/apple/fe1afa62-3630-4136-b6d8-87bab99568c9",
    "google_pass_link": "https://commerce-api.raisestaging.com/business/v2/cards/google/fe1afa62-3630-4136-b6d8-87bab99568c9"
  }
}
Attribute Type Description
type string Value will always be cards
id string The unique identifier of the card.
attributes object The card attributes.

Card Attributes

Attribute Type Description
brand_id string The unique identifier of the brand.
brand_name string The name of the brand.
initial_balance integer The initial balance of the card. Reference Currency
balance integer The current balance of the card. Reference Currency
currency string ISO 4217 currency code of the card.
number object An object containing card number data
csc object An object containing card CSC data
url object An object containing the card URL
barcode object An object containing the card barcode
expires_at string The expiration date of the card if applicable. Format: "2006-12-30"
balance_checks_available integer The number of automatic balance checks available for the card.
balance_checks_supported boolean Indicates if the brand supports automatic balance checks for the card.
commission object The commission for the card.
escrow_deduction object The escrow amount deducted from the client's account balance for the card.
state string The state of the card.
created_at integer The unix timestamp of when the card was created.
updated_at integer The unix timestamp of when the card was last updated.
apple_pass_link string This is the link to embed into a "Add To Apple Wallet" button for a given card. This field could be empty, if the brand does not support this feature. The given link is valid for 90 days. Note that a fresh link is provided in each request. Please refer to Apple's Wallet Guidelines for details on how they want you to display their platform on your site: https://developer.apple.com/wallet/add-to-apple-wallet-guidelines/
google_pass_link string This is the link to embed into a "Add To Google Wallet" button for a given card. This field could be empty, if the brand does not support this feature. The given link is valid for 90 days. Note that a fresh link is provided in each request. Please refer to Google's Wallet Guidelines for details on how they want you to display their platform on your site: https://developers.google.com/wallet/generic/resources/brand-guidelines

Card Field

Attribute Type Description
label string The label of the card field.
value string A formatted user friendly value of the card field.
raw string The raw value of the card field.

Card Barcode Field

Attribute Type Description
type string The type of barcode.
value string The barcode value.

Barcode Type

Value Description
CODE128 Code 128 barcode type.
DATA_MATRIX Data Matrix barcode type.
QR_CODE QR Code barcode type.
PDF417 PDF417 barcode type.
PDF417_COMPACT PDF417 Compact barcode type.

Card State

Value Description
ACTIVE The card is active.
REDEEMED The card is redeemed.
EXPIRED The card is expired.

API Errors

Any request that did not succeed will return a 4xx or 5xx error. The 4xx range means a problem with the request, like a missing parameter. The 5xx range means that something went wrong on our end.

The Raise API uses a consistent error response format on all API endpoints.

Refer to the Error Response section for more information about the error response body.

Status Codes

The API provides the following HTTP response status codes:

Error Code Description
200 OK -- The request was successful.
201 Created -- The request was successful and a new resource was created.
400 Bad Request -- The request is invalid or malformed.
401 Unauthorized -- The request lacks valid authentication credentials.
403 Forbidden -- The server understood the request but refuses to authorize it.
412 Precondition Failed -- The server does not meet one of the preconditions that the requester put on the request.
422 Unprocessable Entity -- The request was well-formed but contains semantic errors.
406 Not Acceptable -- The server cannot generate a response that meets the requested format.
500 Internal Server Error -- The server encountered an unexpected condition and cannot fulfill the request.
503 Service Unavailable -- The server is currently unable to handle the request due to temporary overloading or maintenance of the server.

The status codes listed above are defined by RFC 9110

Error Codes

The Raise API returns an error response, a combination of an HTTP response status code combined with a JSON response body containing a Raise Error Code and Error Description.

Error Code Description
ErrCodeInvalidDeviceUUID The Client ID is invalid or missing
ErrCodeInternal Internal error occurred
ErrCodeInvalidTransaction Transaction object is invalid
ErrCodeMissingAuthorization Signature or other required headers are missing
ErrCodeUnauthorized Unauthorized access
ErrCodeUnauthenticated Failed to authenticate
ErrCodeInvalidSignature Invalid signature
ErrCodeBadRequest Request is invalid
ErrCodeFailedRisk Failed risk verification
ErrCodeBrandDisabled Brand is currently unavailable for purchase
ErrCodeDailyPurchaseLimit Daily purchase limit for a user has been reached
ErrCodeNotFound Requested object has not been found
ErrCodeTooManyRequests Too many requests are being made, rate limit has been reached
ErrCodePaginationLimit Invalid pagination limit
ErrCodeAccountDeactivated Account has been deactivated
ErrCodeInsufficientFunds Insufficient funds in the account balance

Error Response

EXAMPLE ERROR RESPONSE

{
  "errors": [
    {
      "id": "ef1a745c-fe31-4df7-a9dd-5893aa66aefe",
      "code": "ErrCodeInvalidDeviceUUID",
      "title": "Missing device uuid"
    }
  ]
}

EXAMPLE MULTIPLE ERROR RESPONSE

{
  "errors": [
    {
      "id": "ef1a745c-fe31-4df7-a9dd-5893aa66aefe",
      "code": "ErrCodeBadRequest",
      "title": "Request is bad",
      "detail": "Invalid brand uuid in request"
    },
    {
      "id": "ef1a745c-fe31-4df7-a9dd-5893aa66a123",
      "code": "ErrCodeInternal",
      "title": "Something went wrong"
    }
  ]
}

Error Object

The errors field is an array of objects with the following fields:

Field Type Description
id string A unique identifier for this particular occurrence of the error.
code string An application-specific error code expressed as a string value.
title string A short, human-readable summary of the error that typically will not change from occurrence to occurrence of the error, except for purposes of localization
detail string A short, human-readable detail of the error this will change depending on the specific error use case and can be empty

Handling Server Errors & Timeouts (5XX)

When encountering a request timeout or receiving a 5XX server error response, follow these steps:

  1. Wait and Retry: Initiate a retry for the request.
  2. Incremental Backoff: If the retry request fails, continue retrying, progressively increasing the wait time between retries.
  3. Maximum Wait Time: If the retry request still fails, continue to wait for the maximum allowed time between each retry request. Once the maximum wait time is reached, do not increase the wait time further.
  4. Cease Retries: Stop retrying requests after reaching the maximum number of retry attempts.
  5. If you require further assistance, please email the error response along with the client_order_id to your designated support contact and your Account Manager.

Changelog

Version Date Released What changed
v2 May 1st, 2024 Creation of new V2 API
v2 July 7th, 2024 Added new endpoints for auth methods and tokens.
v2 August 20th, 2024 Added new PATCH transaction endpoint.
v2 September 25th, 2024 Added Crypto Transaction Hash to Transaction Response.
v2 October 16th, 2024 Added new Polkadot Asset Hub Crypto Assets.
v2 January 2nd, 2025 Added balance check supported attribute to brands and timestamps to cards.
v2 January 15th, 2025 Added new endpoint for crypto quotes.
v2 February 17th, 2025 Add new properties to card object: apple_pass_link and google_pass_link
v2 March 25th, 2026 Update Transactions Endpoint details, Remove Crypto Quote and Payment Method, Add Payment Details
v2 March 26th, 2026 Document GET /business/v2/balance (client fund balance).
v2 June 15th, 2026 Added a Supported Currencies reference table and minor-unit guidance for amounts.

Version

Document version: 1781627298