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.
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.
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.
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.
type - The name of the resource you are trying to access. Example: cards, brands, transactions, etc.attributes - The fields you are trying to update or create.id - The id of the specific resource depending on the type of request. Example: PATCH cards
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.
EXAMPLE
{
"data": {
"type": "resource_type",
"id": "resource_id",
"attributes": {
//.. fields
}
}
}
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.
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
}
}
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:
12300; £1.50 → 150.123 (the yen has no subunit).1234.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.
You can start familiarizing yourself with the Raise API in Playground
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.
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 provides two environments for testing and development purposes.
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 |
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.
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 |
To start using the sandbox environment, please visit Initial Integration to get started. Manage your sandbox credentials by visiting the Raise Sandbox Portal.
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 |
Manage your production credentials by visiting the Raise Client Portal.
Token Integration: Integrating with our OAuth2 "tokens" resource is seamless. Follow these steps to incorporate token handling into your application:
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.
| Attribute | Required | Value | Description |
|---|---|---|---|
| type | true |
string | The type of token. |
| Value | Description |
|---|---|
| BEARER | Bearer authorization token. |
A successful response will have a data object that contains the 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. |
| Attribute | Value | Description |
|---|---|---|
| access_token | string |
The token value. |
| type | string | The token type. |
| expires_at | integer |
Unix timestamp for when the token expires. |
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"
}
}
}
SMS authentication is a method that allows customers to receive a verification code via SMS to authenticate themselves.
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.
The auth methods endpoints are used to manage the authentication methods for a customer.
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.
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.
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.
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.
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. |
| Attribute | Required | Value | Description |
|---|---|---|---|
| type | true |
string | The type of method. |
| method | true |
string |
Hex encoded public key. |
| 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. |
| Attribute | Required | Value | Description |
|---|---|---|---|
| type | true |
string | The type of method. |
| 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 |
| 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. |
| 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. |
Token Integration: Integrating with our OAuth2 auth resource is seamless. Follow these steps to incorporate token handling into your application:
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.
| 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. |
A successful response will have a data object that contains the 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. |
| 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. |
| 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. |
| Value | Description |
|---|---|
| BEARER | Bearer authorization token. |
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.
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. |
| 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.
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.
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.
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.
The response will have a data object that contains the Brand Object
Reference Error Response for a list of possible errors and their descriptions.
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.
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. |
| 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. |
| Attribute | Value | Description |
|---|---|---|
| sort[field] | string |
Sorts by name or popularity. |
| sort[order] | string |
Sort ASC or DESC. |
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.
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"]
}
}
| Attribute | Type | Description |
|---|---|---|
| type | string |
Value will always be brands |
| id | uuidv4 |
The unique identifier of the brand. |
| attributes | object | The 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. |
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. |
| 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 |
| 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. |
| Attribute | Type | Description |
|---|---|---|
| disclaimer | string |
Disclaimer for the brand's gift card redemption. |
| methods | array | Methods for redeeming the brand's gift card. |
| 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. |
| 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. |
| 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 are a way to group brands together. This resource provides a list of categories that are available to the Raise API.
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.
| Attribute | Value | Description |
|---|---|---|
| sort[order] | string |
Sort ASC or DESC |
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.
| 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. |
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.
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.
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.
| 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. |
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)
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
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 |
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.
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"
}
}
}'
| 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. |
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"
}
}
}'
| 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
}
}
}
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 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.
| 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. |
| 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. |
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. |
| Attribute | Required | Type | Description |
|---|---|---|---|
| crypto_details | true |
object | The crypto payment details for the transaction. Refer to Crypto Details for more information. |
| 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. |
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.
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.
The response will have a data object that contains the Transaction Object.
Reference Error Response for a list of possible errors and their descriptions.
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.
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.
| 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. |
| Attribute | Value | Description |
|---|---|---|
| sort_by | string |
Sorts by created_at |
| sort[order] | string |
Sort ASC or DESC. |
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.
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. |
| 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. |
| 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. |
| 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. |
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. |
| 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. |
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 |
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.
kind - identifies the data type of the field value. (See the Supported Field Types).value- the value assigned to the field. (See the 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 names can be any string value with the following restrictions:
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.
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. |
| 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. |
| Attribute | Value | Description |
|---|---|---|
| sort_by | string |
Sorts by created_at or updated_at. |
| sort[order] | string |
Sort ASC or DESC. |
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.
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.
| 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 |
| 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. |
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. |
| 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 |
| 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. |
| Attribute | Type | Description |
|---|---|---|
| type | string | The type of barcode. |
| value | string |
The barcode value. |
| 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. |
| Value | Description |
|---|---|
| ACTIVE | The card is active. |
| REDEEMED | The card is redeemed. |
| EXPIRED | The card is expired. |
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.
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
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 |
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"
}
]
}
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 |
When encountering a request timeout or receiving a 5XX server error response, follow these steps:
client_order_id to your designated support contact and your Account Manager.| 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. |