The triple API enables Partners to integrate with the triple platform and Customers (consumers or card holders) to access offer content.
Connecting to our environment requires proper credentials. See the Authentication section for more details.
Additionally, triple content will be placed on a client-specific S3 bucket for ingestion. Please contact your triple client engagement manager for more information and to setup access.
For a PATCH
operation, any field marked required should always be passed and any
other fields are optional and will not be updated if no field value is passed.
Portfolio Managers are, generally, companies that provide services to multiple separate financial institutions such as regional banks, credit unions, or companies running open-enrollment rewards programs. These partners manage a portfolio of Publishers.
Publishers are, generally, banks or companies that offer one or more payment Card Programs to individuals.
Content Providers are the companies that publish Offers on the triple platform.
Card Programs represent a logical grouping of issued payment cards. A Publisher will create a Card Program for each debit or credit card offering, such as miles or cash back. For Publishers that are not Banks/Card Issuers (for example, a third-party rewards program), Card Programs can provide a simple way to organize Card Accounts.
Card Accounts represent the account connected to a payment card. Multiple physical cards may be associated with a single Card Account, such as when there are multiple authorized users or cards are replaced as lost, stolen, or expired. Each Transaction reported to triple must specify the Card Account to which it belongs.
Consumers represent individual card holders. A Consumer may be associated with multiple Card Accounts across a Publisher's Card Programs, such as when an individual has both a "miles" and a "cash back" card with the same bank. Multiple Consumers may be associated with the same Card Account, such as when there are multiple authorized users.
triple requires Partners to specify IDs for the entities they create through the triple API. Generally, these "external" IDs only need to be unique within the scope of an object's parent entity, but we encourage the use of UUIDs to avoid confusion. External IDs must be stable and never sensitive, as they cannot be updated through the API.
triple will also create a unique ID for each entity created through the API.
Most integration effort will focus on calls to endpoints under the
/partner
path. These endpoints will allow Content Providers to create
and update Offer content and Publishers to register card holders, retrieve
Offer content for display, and submit Transactions for Rewards.
The exposed APIs allow developers to authenticate to the triple service, register and unregister (delete) cards, retrieve affiliate offer URLs, submit transactions, and see user notifications delivered over webhooks.
The /affiliate-link-api
endpoint will soon be updated to integrate with
the Partner API. However, the process for generating a link and redirecting
the user to the affiliate website will remain generally the same.
Two API variants to generate a custom link to an online affiliate offer for a specified Card Account.
Generate a link for an (online) affiliate Offer. The link is specific to a single Card Account (cardholder), in order to attribute the purchase to the correct account.
card_account_external_id required | string Partner-defined, external Card Account ID. If the Card Account does not exist for the specified Program, it will be created with an "enrolled" date of the current day (UTC-12). Required if card_account_internal_id is not defined. |
card_program_external_id required | string The partner-defined, external Card Program ID. |
offer_id required | string Triple Offer ID, provided by the API or offers file. |
publisher_external_id | string The partner-defined, external Publisher ID. Required for Portfolio Managers. |
{- "card_account_external_id": "string",
- "card_program_external_id": "string",
- "offer_id": "string",
- "publisher_external_id": "string"
}
Generate a link for an (online) affiliate Offer. The link is specific to a single Card Account (cardholder), in order to attribute the purchase to the correct account. This endpoint requires the use of a triple generated cardholder ID.
card_account_id required | string Triple-defined Card Accound ID. Triple card_account_id must exist for the specified program. |
offer_id required | string Triple Offer ID, provided by the API or offers file. |
{- "card_account_id": "string",
- "offer_id": "string"
}
Operations related to managing Card Accounts.
A Card Account represents the account for which payment cards (credit or debit cards) are issued. A Transaction will belong to a single Card Account.
If a card is replaced or reissued (because it was lost or stolen), the Card Account itself should not change.
Card Accounts may have a status of "unenrolled" or "enrolled" for Rewards. A Card Account may only receive a Reward if it has a status of "enrolled" on the day of the eligible Transaction.
Returns a CardAccount instance using one or more of its associated external IDs:
The receiver returns the same object as calling the /card-accounts/{id}
endpoint with the triple card account ID if a matching CardAccount
exists.
card_account_external_id required | string (Card Account External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Account. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Account within the scope of its parent Card Program. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
card_program_external_id | string (Card Program External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Program. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Program within the scope of its parent Publisher. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
publisher_external_id | string (Publisher External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Publisher. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Publisher within the scope of its parent Portfolio Manager. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
{- "card_account_external_id": "string",
- "card_program_external_id": "string",
- "publisher_external_id": "string"
}
{- "card_program_id": "triple-abc-123",
- "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "id": "triple-abc-123",
- "status": "ENROLLED",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Returns a list of Card Accounts, optionally filtered.
Currently, this endpoint has a hard limit of returning up to 1,000 results. Future API releases may support paging results.
publisher_external_id | string [ 1 .. 255 ] characters Partner-provided external ID of a Publisher. This parameter is ignored unless the client is a Portfolio Manager. |
card_program_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
card_account_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
{- "card_accounts": [
- {
- "card_program_id": "triple-abc-123",
- "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "id": "triple-abc-123",
- "status": "ENROLLED",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Creates a card account.
default_country_code
may be set to the country associated with the
card account. It defaults to US if it is not specified.
default_postal_code
may be set to a postal code associated with the
card account (e.g. domicile, other). The actual value is left to the
discretion of the caller.
NB: The default_postal_code
will be used in lieu of proximity_target
if one is not specified during a CardAccount instance request for
associated offers. If default_postal_code
is not set for the card
account, the CardProgram default_postal_code
for the program will be
used instead.
card_program_external_id required | string (Card Program External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Program. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Program within the scope of its parent Publisher. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
default_country_code | string (CountryCode) = 2 characters ^[A-Z]{2}$ 2-letter ISO-3166 country code |
default_postal_code | string (PostalCode) [ 1 .. 15 ] characters ZIP Code™, ZIP+4, or postal code |
external_id required | string (Card Account External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Account. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Account within the scope of its parent Card Program. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
publisher_external_id | string (Publisher External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Publisher. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Publisher within the scope of its parent Portfolio Manager. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
status | string (CardAccountEnrollmentStatus) Default: "ENROLLED" Enum: "ENROLLED" "NOT_ENROLLED" "CLOSED"
|
{- "card_program_external_id": "string",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "publisher_external_id": "string",
- "status": "ENROLLED"
}
{- "card_program_id": "triple-abc-123",
- "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "id": "triple-abc-123",
- "status": "ENROLLED",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
This endpoint provides significant performance advantages, over POSTing and PATCHing single Card Accounts, when creating or updating large numbers of Card Accounts. The behavior of this endpoint is similar to that of those endpoints except for some minor differences in how errors are handled.
Card Accounts that are not found, as resolved by their external_id
and
card_program_external_id
(and publisher_external_id
when applicable),
are created. Existing objects are updated as though they were PATCH
ed.
You should check the result_type
of the response to handle errors for
individual items. If the top-level request returns a Client Error response
(response codes 400-499), no Card Accounts from the batch were created or
updated.
This endpoint is currently rate limited at 50 requests per minute.
action required | string Value: "upsert" The action to take |
required | Array of objects (CardAccountPost) [ 1 .. 1000 ] items |
{- "action": "upsert",
- "card_accounts": [
- {
- "card_program_external_id": "string",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "publisher_external_id": "string",
- "status": "ENROLLED"
}
]
}
{- "failures": [
- {
- "errors": [
- {
- "status_code": 0,
- "content": {
- "details": [ ],
- "error_message": "string",
- "exception": "TripleBadRequestError"
}
}
], - "index": 0
}
], - "result_summary": { },
- "result_type": "COMPLETE_FAILURE"
}
Get Card Account details.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "card_program_id": "triple-abc-123",
- "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "id": "triple-abc-123",
- "status": "ENROLLED",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
(Alpha - this endpoint is subject to breaking change)
Enroll, un-enroll, or close a Card Account.
Card Accounts must be enrolled at the time of a transaction and not closed at the time of distribution in order to receive Rewards.
The date of enrollment defaults to the current date at UTC-12. The date of un-enrollment defaults to the current date at UTC+12. (This is to accommodate the possibility of a customer's current local date being different than the server's.)
A future API release will address the edge case of unenrolling and then re-enrolling an account within the same day.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
default_country_code | string (CountryCode) = 2 characters ^[A-Z]{2}$ 2-letter ISO-3166 country code |
default_postal_code | string (PostalCode) [ 1 .. 15 ] characters ZIP Code™, ZIP+4, or postal code |
status | string (CardAccountEnrollmentStatusPatch) Enum: "ENROLLED" "NOT_ENROLLED" "CLOSED"
|
{- "default_country_code": "US",
- "default_postal_code": "15206",
- "status": "ENROLLED"
}
{- "card_program_id": "triple-abc-123",
- "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "id": "triple-abc-123",
- "status": "ENROLLED",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
minimum_reward_status required | string (MinimumRewardStatus) Enum: "PENDING_MERCHANT_APPROVAL" "PENDING_MERCHANT_FUNDING" "PENDING_TRANSFER_TO_PUBLISHER" "DISTRIBUTED_TO_PUBLISHER" "DISTRIBUTED_TO_CARDHOLDER" The minimum reward status to be returned in the list of rewards. From lowest to highest, these values are:
If you use |
page | integer Default: 1 The page of results for returned Objects. |
date_range required | string (RewardStatementDateRange) Enum: "REWARDS_EARNED_LAST_90_DAYS" "REWARDS_EARNED_LAST_180_DAYS" "REWARDS_EARNED_LAST_365_DAYS" "REWARDS_EARNED_YEAR_TO_DATE" "REWARDS_EARNED_LIFETIME" The time period for which you would like to retrieve rewards. |
{- "rewards": [
- {
- "reward": "string",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "offer_id": "triple-abc-123",
- "reward_rate": "string",
- "reward_value": "string",
- "reward_status": "PENDING_MERCHANT_APPROVAL",
- "reward_type": "FIXED",
- "title": "string",
- "transaction_amount": 12,
- "transaction_date": "2021-12-01T01:59:59.000Z"
}
], - "rewards_earned_last_90_days": "string",
- "rewards_earned_last_180_days": "string",
- "rewards_earned_year_to_date": "string",
- "rewards_earned_365_days": "string",
- "rewards_earned_lifetime": "string"
}
A Card Program is logical grouping of Card Accounts. Typically, this is a specific type of card offering by a Publisher - a debit or credit card with its own rewards, such as miles or cash back.
Alternatively, for Publishers that are not Banks or Card Issuers (for example, a third-party rewards program), this is simply a way to organize Card Accounts.
Card Accounts may not move between Card Programs and should not be represented in more than one Card Program.
Returns a list of Card Programs, optionally filtered. This list can be used to find Card Programs' ID given an external ID.
publisher_external_id | string [ 1 .. 255 ] characters Partner-provided external ID of a Publisher. This parameter is ignored unless the client is a Portfolio Manager. |
card_program_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
{- "card_programs": [
- {
- "card_bins": [
- "444789"
], - "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "description": "string",
- "external_id": "string",
- "hosted_ui_subdomain": "mybanque",
- "id": "triple-abc-123",
- "loyalty_unit": "POINTS",
- "loyalty_conversion_rate": 100,
- "name": "string",
- "program_currency": "USD",
- "publisher_id": "triple-abc-123",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Creates a card program.
default_country_code
may be set to the country associated with the
card program. It defaults to US if it is not specified.
default_postal_code
must be set to a postal code associated with the
card program (e.g. domicile, other). The actual value is left to the
discretion of the caller.
NB: The default_postal_code
will be used in lieu of proximity_target
if one is not specified during a CardAccount instance request for
associated offers. If default_postal_code
is not set for the card
account, the CardProgram default_postal_code
for the program will be
used instead.
card_bins | Array of strings (CardProgramCardBins) <= 100 items [^\d{6}$] The Bank Identification Numbers for cards in this Card Program. Providing these values helps triple validate Transactions during reward processing and enforce card requirements during purchases through Affiliate Offers. |
default_country_code | string (USDefaultedCountryCode) = 2 characters ^[A-Z]{2}$ Default: "US" 2-letter ISO-3166 country code |
default_postal_code required | string (PostalCode) [ 1 .. 15 ] characters ZIP Code™, ZIP+4, or postal code |
external_id required | string (Card Program External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Program. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Program within the scope of its parent Publisher. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
name required | string (CardProgramName) [ 1 .. 100 ] characters ^(?!\s)[\.]+(?<!\s)$ Display name of the Card Program |
description | string (CardProgramDescription) <= 2000 characters Description of the Card Program |
hosted_ui_subdomain | string (HostedUiSubdomain) <= 60 characters The subdomain for Triple hosted user interfaces. |
program_currency required | string (CurrencyCode) = 3 characters ^[A-Z]{3}$ Default: "USD" 3-character ISO-4217 currency code. Only USD is currently supported. Contact your Triple representative for support with additional currencies. Note that some values are not supported, particularly test and fund codes. |
loyalty_unit | string (CardProgramLoyaltyUnit) Enum: "POINTS" "MILES" The unit used to pay with loyalty. Currently only POINTS and MILES are supported. |
loyalty_conversion_rate | number <double> (CardProgramLoyaltyConversionRate) > 0 The rate of loyalty units earned per reward dollar earned. For example, setting this to 100 would earn customers 100 loyalty miles for every reward dollar earned. |
publisher_external_id | string (Publisher External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Publisher. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Publisher within the scope of its parent Portfolio Manager. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
{- "card_bins": [
- "444789"
], - "default_country_code": "US",
- "default_postal_code": "15206",
- "external_id": "string",
- "name": "string",
- "description": "string",
- "hosted_ui_subdomain": "mybanque",
- "program_currency": "USD",
- "loyalty_unit": "POINTS",
- "loyalty_conversion_rate": 100,
- "publisher_external_id": "string"
}
{- "card_bins": [
- "444789"
], - "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "description": "string",
- "external_id": "string",
- "hosted_ui_subdomain": "mybanque",
- "id": "triple-abc-123",
- "loyalty_unit": "POINTS",
- "loyalty_conversion_rate": 100,
- "name": "string",
- "program_currency": "USD",
- "publisher_id": "triple-abc-123",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "card_bins": [
- "444789"
], - "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "description": "string",
- "external_id": "string",
- "hosted_ui_subdomain": "mybanque",
- "id": "triple-abc-123",
- "loyalty_unit": "POINTS",
- "loyalty_conversion_rate": 100,
- "name": "string",
- "program_currency": "USD",
- "publisher_id": "triple-abc-123",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Updates a Card Program.
Only fields "name", and "card_bins" may be updated for a Card Program.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
name | string (CardProgramName) [ 1 .. 100 ] characters ^(?!\s)[\.]+(?<!\s)$ Display name of the Card Program |
card_bins | Array of strings (CardProgramCardBins) <= 100 items [^\d{6}$] The Bank Identification Numbers for cards in this Card Program. Providing these values helps triple validate Transactions during reward processing and enforce card requirements during purchases through Affiliate Offers. |
description | string (CardProgramDescription) <= 2000 characters Description of the Card Program |
hosted_ui_subdomain | string (HostedUiSubdomain) <= 60 characters The subdomain for Triple hosted user interfaces. |
{- "name": "string",
- "card_bins": [
- "444789"
], - "description": "string",
- "hosted_ui_subdomain": "mybanque"
}
{- "card_bins": [
- "444789"
], - "created_at": "2021-12-01T01:59:59.000Z",
- "default_country_code": "US",
- "default_postal_code": "15206",
- "description": "string",
- "external_id": "string",
- "hosted_ui_subdomain": "mybanque",
- "id": "triple-abc-123",
- "loyalty_unit": "POINTS",
- "loyalty_conversion_rate": 100,
- "name": "string",
- "program_currency": "USD",
- "publisher_id": "triple-abc-123",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Operations related to Activating Offers for a Customer.
Some Offers are not eligible for Rewards until a Customer activates the Offer. Some Offers may require re-activation after a specified number of days.
Activate an offer by id for a specified card account
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
offer_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "ok": true
}
Operations related to displaying Offers to Customers.
Offer Display will generally follow the following flow:
Affiliate Offers are online Offers that require redirecting the Customer to a custom URL. The URL is specific to that Customer and is generated by calling the "Clicks" endpoint, usually while viewing the Offer Details.
Offer Display Rules can be configured to automatically exclude offers from the result sets.
Lists activated offers for the card account designated in the url path.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
expires_within | integer or null Enum: 1 3 5 10 |
include_expired | boolean Default: false |
page_offset | integer [ 0 .. 975 ] Default: 0 The beginning index for the current page of activated offers. |
page_size | integer [ 1 .. 100 ] Default: 25 The number of offers returned for the current page of activated offers. |
object (GeoTarget) The Geo-coordinates for the end-user's location,
given as If providing postal_code, country_code is required and must be set to US, as only US ZIP codes are currently supported. If providing If no location is provided, the default postal code for the Card Account or Card Program is used. |
{- "expires_within": 1,
- "include_expired": false,
- "page_offset": 0,
- "page_size": 25,
- "proximity_target": {
- "country_code": "US",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "radius": 35000
}
}
{- "activated_offers": [
- {
- "activation_required": true,
- "external_id": "string",
- "category": "AUTOMOTIVE",
- "currency_code": "USD",
- "effective_date": "2021-12-01",
- "expiration_date": "2021-12-31",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "activated_at": "2022-07-15T15:56:36+0000",
- "activation_expires_at": "2022-07-22T15:56:36+0000",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "merchant_website": "string",
- "minimum_spend": 0,
- "offer_mode": "ONLINE",
- "offer_preference": "HIDE_OFFER",
- "redemption_coupon_code": "string",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "type": "CARD_LINKED",
- "nearest_location": {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "distance": 0,
- "email": "string",
- "id": "triple-abc-123",
- "is_in_radius": true,
- "location_name": "Peter Piper's Pizza - South Evermore",
- "phone_number": "string",
- "url": "string"
}
}
]
}
Get a list of categories with the count of active offers for each offer category that is available to a cardholder.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
exclude_inactive_offers | boolean Deprecated Include only categories with active offers |
{- "categories": [
- {
- "category": "AUTOMOTIVE",
- "count": "10"
}
]
}
Get Offer Recommendations.
Get Offer Recommendations, optionally filtering by offer modes and/or offer categories.
If include_modes
and include_categories
are omitted, specified as null or specified
as an empty list, the application will default to include all values in the enum.
Providing a latitude
and longitude
for proximity_target
is highly
encouraged. Doing so allows Triple to deliver the most relevant Offers
and Merchant Locations.
Note that Offer Display Exclusion Rules are enforced against all recommendations.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
object (ApplyFilter) Applies a search filter. If more than one filter property is specified, the filter condition is expressed as an AND of the specified filter properties. | |
include_categories | Array of strings (TripleOfferCategory) [ 1 .. 13 ] items Default: ["AUTOMOTIVE","CHILDREN_AND_FAMILY","ELECTRONICS","ENTERTAINMENT","FINANCIAL_SERVICES","FOOD","HEALTH_AND_BEAUTY","HOME","OFFICE_AND_BUSINESS","RETAIL","SERVICES_AND_SUBSCRIPTIONS","TRAVEL","UTILITIES_AND_TELECOM"] Items Enum: "AUTOMOTIVE" "CHILDREN_AND_FAMILY" "ELECTRONICS" "ENTERTAINMENT" "FINANCIAL_SERVICES" "FOOD" "HEALTH_AND_BEAUTY" "HOME" "OFFICE_AND_BUSINESS" "RETAIL" "SERVICES_AND_SUBSCRIPTIONS" "TRAVEL" "UTILITIES_AND_TELECOM" |
include_modes | Array of strings (OfferMode) [ 1 .. 3 ] items Default: ["ONLINE","IN_PERSON"] Items Enum: "ONLINE" "IN_PERSON" |
object (GeoTarget) The Geo-coordinates for the end-user's location,
given as If providing postal_code, country_code is required and must be set to US, as only US ZIP codes are currently supported. If providing If no location is provided, the default postal code for the Card Account or Card Program is used. | |
page_size | integer [ 0 .. 1000 ] Default: 100 |
{- "apply_filter": {
- "category": "AUTOMOTIVE",
- "exclude_activated_offers": false,
- "exclude_content_provider_ids": [
- "triple-abc-123"
], - "exclude_offer_ids": [
- "triple-abc-123"
], - "include_offer_ids": [
- "triple-abc-123"
], - "mode": "ONLINE",
- "type": "CARD_LINKED",
- "activation_required": true
}, - "include_categories": [
- "AUTOMOTIVE",
- "CHILDREN_AND_FAMILY",
- "ELECTRONICS",
- "ENTERTAINMENT",
- "FINANCIAL_SERVICES",
- "FOOD",
- "HEALTH_AND_BEAUTY",
- "HOME",
- "OFFICE_AND_BUSINESS",
- "RETAIL",
- "SERVICES_AND_SUBSCRIPTIONS",
- "TRAVEL",
- "UTILITIES_AND_TELECOM"
], - "include_modes": [
- "ONLINE",
- "IN_PERSON"
], - "proximity_target": {
- "country_code": "US",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "radius": 35000
}, - "page_size": 100
}
{- "recommended_offers": [
- {
- "activation_required": true,
- "external_id": "string",
- "category": "AUTOMOTIVE",
- "currency_code": "USD",
- "effective_date": "2021-12-01",
- "expiration_date": "2021-12-31",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "activated_at": "2022-07-15T15:56:36+0000",
- "activation_expires_at": "2022-07-22T15:56:36+0000",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "merchant_website": "string",
- "minimum_spend": 0,
- "offer_mode": "ONLINE",
- "offer_preference": "HIDE_OFFER",
- "redemption_coupon_code": "string",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "type": "CARD_LINKED",
- "nearest_location": {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "distance": 0,
- "email": "string",
- "id": "triple-abc-123",
- "is_in_radius": true,
- "location_name": "Peter Piper's Pizza - South Evermore",
- "phone_number": "string",
- "url": "string"
}
}
], - "total": 10000
}
Search for offers, optionally by category.
Providing a latitude
and longitude
for proximity_target
is highly
encouraged. Doing so allows Triple to deliver the most relevant Offers
and Merchant Locations.
The default behavior of this endpoint is the null query, which fetches triple offers recommendations based on a Customer's geo-location, transaction history, and offer interactions.
However, a Customer can also search directly for offers with ad hoc text queries and/or by faceting on offer category. This action replaces the null query with search terms and/or one or more offer category facets. For example, a Customer may search for 'italian food' in plain text and select the 'FOOD' offer category facet.
Search results are paginated, using the page_size
and page_offset
parameters. For example, page_size=10 and page_offset=30 corresponds to
the 4th page of 10 offers.
Note that Offer Display Rules are enforced against all search results.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
object (ApplyFilter) Applies a search filter. If more than one filter property is specified, the filter condition is expressed as an AND of the specified filter properties. | |
object (CrowdingParameters) Crowding parameters control the maximum number of consecutive offers that may share the same characteristic. Supported parameters include: - mode: ONLINE or IN_PERSON - category: RETAIL, FOOD, etc. - merchant: 'ACME inc.', 'Big Multinational Brand', etc. NOTE: Crowding maximums may be exceeded depending on the availability of relevant replacement offers for any given query. Crowding maximums do not apply for a particular offer characteristic if a search query filter is applied to that characterstic. (e.g. Filtering on mode: ONLINE will return exclusively ONLINE results, even if a crowding parameter for mode is specified.) | |
page_offset | integer [ 0 .. 975 ] Default: 0 The beginning index for the current page of offers. |
page_size | integer [ 1 .. 100 ] Default: 25 The number of offers returned for the current page of search results. |
object (GeoTarget) The Geo-coordinates for the end-user's location,
given as If providing postal_code, country_code is required and must be set to US, as only US ZIP codes are currently supported. If providing If no location is provided, the default postal code for the Card Account or Card Program is used. | |
text_query | string [ 0 .. 75 ] characters Text query used to search offers. Text queries over 75 characters will be truncated. |
{- "apply_filter": {
- "category": "AUTOMOTIVE",
- "exclude_activated_offers": false,
- "exclude_content_provider_ids": [
- "triple-abc-123"
], - "exclude_offer_ids": [
- "triple-abc-123"
], - "include_offer_ids": [
- "triple-abc-123"
], - "mode": "ONLINE",
- "type": "CARD_LINKED",
- "activation_required": true
}, - "crowding_parameters": {
- "category": 1,
- "merchant": 1,
- "mode": 1
}, - "page_offset": 0,
- "page_size": 25,
- "proximity_target": {
- "country_code": "US",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "radius": 35000
}, - "text_query": "italian food"
}
{- "offers": [
- {
- "activation_required": true,
- "external_id": "string",
- "category": "AUTOMOTIVE",
- "currency_code": "USD",
- "effective_date": "2021-12-01",
- "expiration_date": "2021-12-31",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "activated_at": "2022-07-15T15:56:36+0000",
- "activation_expires_at": "2022-07-22T15:56:36+0000",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "merchant_website": "string",
- "minimum_spend": 0,
- "offer_mode": "ONLINE",
- "offer_preference": "HIDE_OFFER",
- "redemption_coupon_code": "string",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "type": "CARD_LINKED",
- "nearest_location": {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "distance": 0,
- "email": "string",
- "id": "triple-abc-123",
- "is_in_radius": true,
- "location_name": "Peter Piper's Pizza - South Evermore",
- "phone_number": "string",
- "url": "string"
}
}
], - "total": 10000
}
Get details and merchant locations for an offer associated with a card account.
Providing a latitude
and longitude
for proximity_target
is highly
encouraged. Doing so allows Triple to deliver the most relevant Offers
and Merchant Locations.
cardholder_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
offer_id required | string (EntityId) [ 1 .. 100 ] characters The triple-defined ID for the entity. |
object (GeoTarget) The Geo-coordinates for the end-user's location,
given as If providing postal_code, country_code is required and must be set to US, as only US ZIP codes are currently supported. If providing If no location is provided, the default postal code for the Card Account or Card Program is used. |
{- "offer_id": "triple-abc-123",
- "proximity_target": {
- "country_code": "US",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "radius": 35000
}
}
{- "merchant_locations": [
- {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "distance": 0,
- "email": "string",
- "id": "triple-abc-123",
- "is_in_radius": true,
- "location_name": "Peter Piper's Pizza - South Evermore",
- "phone_number": "string",
- "url": "string"
}
], - "offer": {
- "activation_required": true,
- "external_id": "string",
- "category": "AUTOMOTIVE",
- "currency_code": "USD",
- "effective_date": "2021-12-01",
- "expiration_date": "2021-12-31",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "activated_at": "2022-07-15T15:56:36+0000",
- "activation_expires_at": "2022-07-22T15:56:36+0000",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "merchant_website": "string",
- "minimum_spend": 0,
- "offer_mode": "ONLINE",
- "offer_preference": "HIDE_OFFER",
- "redemption_coupon_code": "string",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "type": "CARD_LINKED",
- "description": "string",
- "excluded_dates": [
- "2021-12-25"
], - "invalid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}, - "maximum_reward_cumulative": "1/3M",
- "maximum_redemptions": "1/3M",
- "maximum_reward_per_transaction": 0,
- "terms_and_conditions": "string",
- "valid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}
}
}
Get details and merchant locations for an offer.
offer_id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "merchant_locations": [
- {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "distance": 0,
- "email": "string",
- "id": "triple-abc-123",
- "is_in_radius": true,
- "location_name": "Peter Piper's Pizza - South Evermore",
- "phone_number": "string",
- "url": "string"
}
], - "offer": {
- "activation_required": true,
- "external_id": "string",
- "category": "AUTOMOTIVE",
- "currency_code": "USD",
- "effective_date": "2021-12-01",
- "expiration_date": "2021-12-31",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "activated_at": "2022-07-15T15:56:36+0000",
- "activation_expires_at": "2022-07-22T15:56:36+0000",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "merchant_website": "string",
- "minimum_spend": 0,
- "offer_mode": "ONLINE",
- "offer_preference": "HIDE_OFFER",
- "redemption_coupon_code": "string",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "type": "CARD_LINKED",
- "description": "string",
- "excluded_dates": [
- "2021-12-25"
], - "invalid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}, - "maximum_reward_cumulative": "1/3M",
- "maximum_redemptions": "1/3M",
- "maximum_reward_per_transaction": 0,
- "terms_and_conditions": "string",
- "valid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}
}
}
Alpha - These endpoints are subject to breaking changes!
Exclude Offers from cardholders based on specific Offer properties. Filters apply globally, to all Publishers (if created by a Portfolio Manager) and Card Programs created by the caller. Any Offer matching the filter is immediately excluded from Search results, Recommendations, and Transaction Matching.
Return a list of Merchants.
page | integer Default: 1 The page of results for returned Objects. |
page_size | integer Default: 100 The size of pages for returned Objects. |
query | string Query string for merchant names. |
{- "merchants": [
- {
- "merchant_category_code": "7998",
- "merchant_deleted_at": "2021-12-01T01:59:59.000Z",
- "merchant_id": "merchant-123",
- "merchant_logo_url": "string",
- "merchant_name": "string",
- "offer_id": "offer-456",
}
], - "total": 12
}
Gets an Offer Filter.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "created_at": "2021-12-01T01:59:59.000Z",
- "description": "Exclude all offers in the food or travel categories.\n",
- "id": "triple-abc-123",
- "is_activated": true,
- "name": "Exclude food & travel",
- "offer_condition": {
- "categories": [
- "AUTOMOTIVE"
], - "content_provider_ids": [
- "triple-abc-123"
], - "merchant_ids": [
- "triple-abc-123"
], - "offer_ids": [
- "triple-abc-123"
]
}, - "updated_at": "2021-12-01T01:59:59.000Z"
}
Updates an Offer Filter.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
description | string (OfferFilterDescription) [ 5 .. 500 ] characters Readable description for this rule. |
is_activated | boolean If true, the filter is applied to offers. |
name | string (OfferFilterName) [ 5 .. 50 ] characters The short name for a filter. |
object (OfferFilterOfferCondition) Summary: Specifies the condition an offer must satisfy for a filter to apply. You may wish to exclude specific merchants or offers by specifying their IDs in the provided fields. Providing one or more category values will exclude all offers from those categories. Triple will not match new transactions against Offers meeting any of these conditions, even if the Offer was previously displayed to the cardholder. |
{- "description": "Exclude all offers in the food or travel categories.\n",
- "is_activated": true,
- "name": "Exclude food & travel",
- "offer_condition": {
- "categories": [
- "AUTOMOTIVE"
], - "content_provider_ids": [
- "triple-abc-123"
], - "merchant_ids": [
- "triple-abc-123"
], - "offer_ids": [
- "triple-abc-123"
]
}
}
{- "created_at": "2021-12-01T01:59:59.000Z",
- "description": "Exclude all offers in the food or travel categories.\n",
- "id": "triple-abc-123",
- "is_activated": true,
- "name": "Exclude food & travel",
- "offer_condition": {
- "categories": [
- "AUTOMOTIVE"
], - "content_provider_ids": [
- "triple-abc-123"
], - "merchant_ids": [
- "triple-abc-123"
], - "offer_ids": [
- "triple-abc-123"
]
}, - "updated_at": "2021-12-01T01:59:59.000Z"
}
Deletes an Offer Filter.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "status_code": 400,
- "content": {
- "details": [
- null
], - "error_message": "The request is malformed.",
- "exception": "TripleBadRequestError"
}
}
{- "filters": [
- {
- "created_at": "2021-12-01T01:59:59.000Z",
- "description": "Exclude all offers in the food or travel categories.\n",
- "id": "triple-abc-123",
- "is_activated": true,
- "name": "Exclude food & travel",
- "offer_condition": {
- "categories": [
- "AUTOMOTIVE"
], - "content_provider_ids": [
- "triple-abc-123"
], - "merchant_ids": [
- "triple-abc-123"
], - "offer_ids": [
- "triple-abc-123"
]
}, - "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Creates a new Offer Filter.
description required | string (OfferFilterDescription) [ 5 .. 500 ] characters Readable description for this rule. |
is_activated | boolean (OfferFilterIsActivated) Default: true If true, the filter is applied to offers. |
name required | string (OfferFilterName) [ 5 .. 50 ] characters The short name for a filter. |
required | object (OfferFilterOfferCondition) Summary: Specifies the condition an offer must satisfy for a filter to apply. You may wish to exclude specific merchants or offers by specifying their IDs in the provided fields. Providing one or more category values will exclude all offers from those categories. Triple will not match new transactions against Offers meeting any of these conditions, even if the Offer was previously displayed to the cardholder. |
{- "description": "Exclude all offers in the food or travel categories.\n",
- "is_activated": true,
- "name": "Exclude food & travel",
- "offer_condition": {
- "categories": [
- "AUTOMOTIVE"
], - "content_provider_ids": [
- "triple-abc-123"
], - "merchant_ids": [
- "triple-abc-123"
], - "offer_ids": [
- "triple-abc-123"
]
}
}
{- "created_at": "2021-12-01T01:59:59.000Z",
- "description": "Exclude all offers in the food or travel categories.\n",
- "id": "triple-abc-123",
- "is_activated": true,
- "name": "Exclude food & travel",
- "offer_condition": {
- "categories": [
- "AUTOMOTIVE"
], - "content_provider_ids": [
- "triple-abc-123"
], - "merchant_ids": [
- "triple-abc-123"
], - "offer_ids": [
- "triple-abc-123"
]
}, - "updated_at": "2021-12-01T01:59:59.000Z"
}
Returns a list of the Content Provider-defined Card Exclusions.
Transactions from payment cards with these identifiers will be excluded from matching the Offers you create.
page | integer Default: 1 The page of results for returned Objects. |
page_size | integer Default: 100 The size of pages for returned Objects. |
{- "card_accounts": [
- {
- "card_bin_6": "string",
- "card_last_4": "0001",
- "created_at": "2021-12-01T01:59:59.000Z",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Update the list of Content Provider-defined Card Exclusions.
upsert
to add card identifiers to the list or set the updated_at
of
existing items to the current date and time.remove
to remove card identifiers from the listremove_not_updated_since
to remove card identifiers based on their
updated_at
timestamp.action required | string The action to take |
required | Array of objects [ 1 .. 1000 ] items |
{- "action": "remove",
- "card_exclusions": [
- {
- "card_bin_6": "string",
- "card_last_4": "0001"
}
]
}
{- "status_code": 400,
- "content": {
- "details": [
- null
], - "error_message": "The request is malformed.",
- "exception": "TripleBadRequestError"
}
}
Returns a list of Merchants, optionally filtered.
This list can be used to find a Merchant's ID given an external ID. This endpoint has a limit of up to 100 merchants per page.
merchant_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
page | integer Default: 1 The page of results for returned Objects. |
page_size | integer Default: 100 The size of pages for returned Objects. |
{- "merchants": [
- {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "logo_url": "string",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Creates a Merchant.
required | object (StrictAddress) A physical address in the world, with required fields. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. |
assumed_name required | string (MerchantAssumedName) [ 1 .. 100 ] characters The (doing-business-as) name of the Merchant. |
external_id required | string (Merchant External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Merchant. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Merchant within the scope of its parent Content Provider. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
merchant_category_code required | string (MerchantCategoryCode) = 4 characters ^\d{4}$ The 4-digit Merchant Category Code |
logo_url | string <url> (MerchantLogoUrl) <= 2000 characters ^https://.+$ A link to the merchant's logo |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "external_id": "string",
- "merchant_category_code": "7998",
- "logo_url": "string"
}
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "logo_url": "string",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "logo_url": "string",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Updates a Merchant with any of the values set in the request. The
update takes an object with zero or more value definitions, each can be
set to the value described in the spec or null
. Invalid values will
raise an error condition.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
assumed_name | string (MerchantAssumedName) [ 1 .. 100 ] characters The (doing-business-as) name of the Merchant. |
object (Address) A physical address in the world. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. NOTE: Though not marked as required, the street address, postal code, and country code are required for transaction matching to function properly. | |
merchant_category_code | string (MerchantCategoryCode) = 4 characters ^\d{4}$ The 4-digit Merchant Category Code |
logo_url | string <url> (MerchantLogoUrl) <= 2000 characters ^https://.+$ A link to the merchant's logo |
{- "assumed_name": "string",
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "merchant_category_code": "7998",
- "logo_url": "string"
}
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "logo_url": "string",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Returns a list of Merchant Locations, optionally filtered.
This list can be used to find a Merchant Location's ID given an external ID.
merchant_location_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
page | integer Default: 1 The page of results for returned Objects. |
page_size | integer Default: 100 The size of pages for returned Objects. |
parent_merchant_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
{- "locations": [
- {
- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "email": "merchant.location@merchant.com",
- "external_id": "string",
- "id": "triple-abc-123",
- "is_online": true,
- "location_name": "string",
- "parent_merchant_external_id": "string",
- "phone_number": "string",
- "processor_merchant_ids": [
- {
- "mid": "9000012345",
- "mid_type": "VISA_VMID"
}
], - "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Creates a Merchant Location.
object (StrictAddress) A physical address in the world, with required fields. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. | |
string (MerchantLocationEmail) <= 200 characters ^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([... An email address for the location. | |
external_id required | string (Merchant Location External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Merchant Location. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Merchant Location within the scope of its parent Content Provider. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
is_online required | boolean (MerchantLocationIsOnline) Indicates whether or not this is an online location. |
location_name | string (MerchantLocationName) [ 0 .. 100 ] characters ^(?!\s)(.+)?(?<!\s)$ The name of the Merchant Location. If not specified, the Merchant name is used. |
location_website | string (MerchantLocationWebsite) <= 2000 characters ^https:\/\/.+$ A URL for the location or online offer. Required if 'is_online' is true |
parent_merchant_external_id required | string (Merchant Location External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Merchant Location. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Merchant Location within the scope of its parent Content Provider. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
phone_number | string (MerchantLocationPhoneNumber) <= 16 characters ^(([0-9]{3})?[-\s\.]?[(]?[0-9]{3}[)]?[-\s\.]?... A phone number for the location. |
Array of objects (ProcessorMerchantIds) The Processor Merchant ID (MID) is an unique number used to identify the business for credit and debit card payment processing. Physical locations and online retailers may have multiple MIDs, even for the same processor network, usually for different departments or checkouts. |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "email": "merchant.location@merchant.com",
- "external_id": "string",
- "is_online": true,
- "location_name": "string",
- "parent_merchant_external_id": "string",
- "phone_number": "string",
- "processor_merchant_ids": [
- {
- "mid": "9000012345",
- "mid_type": "VISA_VMID"
}
]
}
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "email": "merchant.location@merchant.com",
- "external_id": "string",
- "id": "triple-abc-123",
- "is_online": true,
- "location_name": "string",
- "parent_merchant_external_id": "string",
- "phone_number": "string",
- "processor_merchant_ids": [
- {
- "mid": "9000012345",
- "mid_type": "VISA_VMID"
}
], - "updated_at": "2021-12-01T01:59:59.000Z"
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "email": "merchant.location@merchant.com",
- "external_id": "string",
- "id": "triple-abc-123",
- "is_online": true,
- "location_name": "string",
- "parent_merchant_external_id": "string",
- "phone_number": "string",
- "processor_merchant_ids": [
- {
- "mid": "9000012345",
- "mid_type": "VISA_VMID"
}
], - "updated_at": "2021-12-01T01:59:59.000Z"
}
Updates a Merchant Location.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
object (Address) A physical address in the world. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. NOTE: Though not marked as required, the street address, postal code, and country code are required for transaction matching to function properly. | |
string (MerchantLocationEmail) <= 200 characters ^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([... An email address for the location. | |
is_online | boolean (MerchantLocationIsOnline) Indicates whether or not this is an online location. |
location_name | string (MerchantLocationName) [ 0 .. 100 ] characters ^(?!\s)(.+)?(?<!\s)$ The name of the Merchant Location. If not specified, the Merchant name is used. |
location_website | string (MerchantLocationWebsite) <= 2000 characters ^https:\/\/.+$ A URL for the location or online offer. Required if 'is_online' is true |
phone_number | string (MerchantLocationPhoneNumber) <= 16 characters ^(([0-9]{3})?[-\s\.]?[(]?[0-9]{3}[)]?[-\s\.]?... A phone number for the location. |
Array of objects (ProcessorMerchantIds) The Processor Merchant ID (MID) is an unique number used to identify the business for credit and debit card payment processing. Physical locations and online retailers may have multiple MIDs, even for the same processor network, usually for different departments or checkouts. |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "email": "merchant.location@merchant.com",
- "is_online": true,
- "location_name": "string",
- "phone_number": "string",
- "processor_merchant_ids": [
- {
- "mid": "9000012345",
- "mid_type": "VISA_VMID"
}
]
}
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "created_at": "2021-12-01T01:59:59.000Z",
- "email": "merchant.location@merchant.com",
- "external_id": "string",
- "id": "triple-abc-123",
- "is_online": true,
- "location_name": "string",
- "parent_merchant_external_id": "string",
- "phone_number": "string",
- "processor_merchant_ids": [
- {
- "mid": "9000012345",
- "mid_type": "VISA_VMID"
}
], - "updated_at": "2021-12-01T01:59:59.000Z"
}
Deletes a Merchant Location
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "status_code": 400,
- "content": {
- "details": [
- null
], - "error_message": "The request is malformed.",
- "exception": "TripleBadRequestError"
}
}
Returns a list of Offers, optionally filtered.
This list can be used to find an Offer's ID given an external ID.
merchant_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
offer_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
{- "offers": [
- {
- "currency_code": "USD",
- "effective_date": "2021-12-01",
- "expiration_date": "2021-12-31",
- "external_id": "string",
- "headline": "string",
- "id": "triple-abc-123",
- "offer_type": "CARD_LINKED",
- "reward_type": "FIXED"
}
], - "total": 0
}
Creates an Offer.
activation_required required | boolean (OfferActivationIsRequired) Indicates whether or not a cardholder must activate this offer prior to transacting and qualifying for the offer reward. If true, transactions that occur prior to the date of the cardholder activating the offer will not qualify for the offer's reward. |
activation_duration_in_days required | number or null (OfferActivationInDays) If specified, the number of days (inclusive) for which an offer activation is valid. If a transaction falls outside of this duration, it will not qualify for the offer. The day of activation is considered day 1. So, if a cardholder activates an offer on Monday with a 3 day duration, they must make their transaction on or before Wednesday. |
allowed_card_program_ids | Array of strings (OfferAllowedCardProgramIds) [ items [ 1 .. 100 ] characters ] If specified, the offer will only be available for the card program id(s) supplied. |
allowed_portfolio_manager_ids | Array of strings (OfferAllowedPortfolioManagerIds) [ items [ 1 .. 100 ] characters ] If specified, the offer will only be available for the portfolio manger id(s) supplied. |
allowed_publisher_ids | Array of strings (OfferAllowedPublisherIds) [ items [ 1 .. 100 ] characters ] If specified, the offer will only be available for the publishers id(s) supplied. |
category required | string (TripleOfferCategory) Enum: "AUTOMOTIVE" "CHILDREN_AND_FAMILY" "ELECTRONICS" "ENTERTAINMENT" "FINANCIAL_SERVICES" "FOOD" "HEALTH_AND_BEAUTY" "HOME" "OFFICE_AND_BUSINESS" "RETAIL" "SERVICES_AND_SUBSCRIPTIONS" "TRAVEL" "UTILITIES_AND_TELECOM" triple Offer Category |
currency_code required | string (OfferCurrencyCode) = 3 characters ^[A-Z]{3}$ Default: "USD" The currency for the offer reward, minimum spend requirement, and maximum reward limitations. The value is an ISO-4217 currency code. |
denied_card_program_ids | Array of strings (OfferDeniedCardProgramIds) [ items [ 1 .. 100 ] characters ] If specified, the offer will be denied for the card program id(s) supplied. |
denied_portfolio_manager_ids | Array of strings (OfferDeniedPortfolioManagerIds) [ items [ 1 .. 100 ] characters ] If specified, the offer will be denied for the portfolio manger id(s) supplied. |
denied_publisher_ids | Array of strings (OfferDeniedPublisherIds) [ items [ 1 .. 100 ] characters ] If specified, the offer will be denied for the publishers id(s) supplied. |
effective_date required | string <date> (OfferEffectiveDate) The first date on which the offer is valid. |
excluded_dates | Array of strings <date> (OfferExcludedDates) [ items <date > ] Dates for which the offer is not valid. Transactions made on these dates will not qualify for a reward. |
expiration_date required | string or null <date> (OfferExpirationDate) If specified, the last date on which the offer is valid. |
external_id required | string (Offer External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for an Offer. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Offer within the scope of its parent Content Provider. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
description required | string (OfferDescription) [ 6 .. 65535 ] characters A long-form text description of or promotional content for an offer |
headline required | string (OfferHeadline) [ 6 .. 100 ] characters The headline or title for the offer, appropriate for top-level display. |
object (OfferInvalidDayParts) If specified, the days of the week and times during which the offer is invalid. | |
marketing_fee_currency_code required | string or null (OfferMarketingFeeCurrencyCode) = 3 characters ^[A-Z]{3}$ Default: "USD" The ISO-3166 label for marketing currency. Defaults to 'USD' if omitted or null. |
marketing_fee_rate required | number or null (OfferMarketingFeeRate) The share percentage if this offer has a marketing_fee_type of percentage, the amount will be between 0.0 and 100.0 |
marketing_fee_type required | string (OfferMarketingFeeType) Enum: "FIXED" "PERCENTAGE" |
marketing_fee_value required | number (OfferMarketingFeeValue) The fixed share value if this offer has a marketing_fee_type of fixed, the amount must be greater than or equal to 0. |
maximum_redemptions required | string or null (OfferMaximumRedemptions) ^\d{1,3}\/\d{1,3}[YMWD]$ The maximum number of times a cardholder may receive a reward for this offer over a given period of time. The numerator of this value is the number of times a reward can be earned. The numerator must be less than 1000. The denominator is the period of time over which the limit is enforced. Time periods must conform to the following restrictions:
|
maximum_reward_cumulative required | string or null (OfferMaximumRewardCumulative) ^\d{1,12}\/\d{1,3}[YMWD]$ The maximum monetary value a cardholder may earn for this offer across multiple transactions over a given period of time. The numerator of this value is the maximum monetary value a reward can earn. The numerator must be less than 1000000000000. The denominator is the period of time over which the limit is enforced. Time periods must conform to the following restrictions:
|
maximum_reward_per_transaction required | number or null (OfferMaximumRewardPerTransaction) > 0 The maximum monetary value a cardholder may earn for a percentage-based reward on any single transaction. |
required | Array of objects or null (OfferMerchantCategories) [ 1 .. 25 ] items The Merchant Category Codes included for a categorical offer. |
merchant_external_id required | string (EntityId) [ 1 .. 100 ] characters The triple-defined ID for the entity. |
merchant_website required | string or null <url> (MerchantWebsite) <= 2000 characters ^https://.+$ |
minimum_spend required | number (OfferMinimumSpend) >= 0 The minimum monetary value that a cardholder must spend for a transaction to qualify for this offer. |
mode required | string (OfferMode) Enum: "ONLINE" "IN_PERSON" The offer delivery mode |
object (OfferBudgetRequest) | |
offer_type required | string (OfferType) Enum: "CARD_LINKED" "AFFILIATE" "CATEGORICAL" The type of offer - card-linked, affiliate, categorical, etc. |
reward_rate required | number or null (OfferRewardRate) > 0 The reward percentage if this offer has a reward_type of percentage, the amount will be between 0.0 and 100.0 |
reward_type required | string (OfferRewardType) Enum: "FIXED" "PERCENTAGE" Indicates whether this offer is for a fixed or percentage-based amount. |
reward_value required | number or null (OfferRewardValue) > 0 The fixed reward value if this offer has a reward_type of fixed, the amount must be greater than or equal to 0. |
terms required | string or null (OfferTermsAndConditions) Terms and conditions for the offer, not inclusive of other limits specified by the offer properties, such as minimum spend, excluded dates, or activation requirements. |
required | object (OfferValidDayParts) If specified, the days of the week and times during which the offer is valid. If unspecified, the offer is valid for all days and times during the week. |
{- "activation_required": true,
- "activation_duration_in_days": 0,
- "allowed_card_program_ids": [
- "triple-abc-123"
], - "allowed_portfolio_manager_ids": [
- "triple-abc-123"
], - "allowed_publisher_ids": [
- "triple-abc-123"
], - "category": "AUTOMOTIVE",
- "currency_code": "USD",
- "denied_card_program_ids": [
- "triple-abc-123"
], - "denied_portfolio_manager_ids": [
- "triple-abc-123"
], - "denied_publisher_ids": [
- "triple-abc-123"
], - "effective_date": "2021-12-01",
- "excluded_dates": [
- "2021-12-25"
], - "expiration_date": "2021-12-31",
- "external_id": "string",
- "description": "string",
- "headline": "string",
- "invalid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}, - "marketing_fee_currency_code": "USD",
- "marketing_fee_rate": 0,
- "marketing_fee_type": "FIXED",
- "marketing_fee_value": 0,
- "maximum_redemptions": "1/3M",
- "maximum_reward_cumulative": "1/3M",
- "maximum_reward_per_transaction": 0,
- "merchant_categories": [
- {
- "code": "7998"
}
], - "merchant_external_id": "triple-abc-123",
- "merchant_website": "string",
- "minimum_spend": 0,
- "mode": "ONLINE",
- "offer_budget": {
- "limit": 0
}, - "offer_type": "CARD_LINKED",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "terms": "string",
- "valid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}
}
{- "activation_duration_in_days": 0,
- "activation_required": true,
- "category": "AUTOMOTIVE",
- "category_tags": "string",
- "currency_code": "USD",
- "description": "string",
- "effective_date": "2021-12-01",
- "excluded_dates": [
- "2021-12-25"
], - "expiration_date": "2021-12-31",
- "external_id": "string",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "invalid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}, - "logo_url": "string",
- "marketing_fee_currency_code": "USD",
- "marketing_fee_rate": 0,
- "marketing_fee_value": 0,
- "marketing_fee_type": "FIXED",
- "maximum_redemptions": "1/3M",
- "maximum_reward_cumulative": "1/3M",
- "maximum_reward_per_transaction": 0,
- "merchant_categories": [
- {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}
], - "merchant_website": "string",
- "minimum_spend": 0,
- "offer_budget": {
- "currency_code": "USD",
- "estimated_allocation": 0,
- "excluded_from_search": true,
- "limit": 0
}, - "offer_mode": "ONLINE",
- "offer_type": "CARD_LINKED",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "terms_and_conditions": "string",
- "valid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "activation_duration_in_days": 0,
- "activation_required": true,
- "category": "AUTOMOTIVE",
- "category_tags": "string",
- "currency_code": "USD",
- "description": "string",
- "effective_date": "2021-12-01",
- "excluded_dates": [
- "2021-12-25"
], - "expiration_date": "2021-12-31",
- "external_id": "string",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "invalid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}, - "logo_url": "string",
- "marketing_fee_currency_code": "USD",
- "marketing_fee_rate": 0,
- "marketing_fee_value": 0,
- "marketing_fee_type": "FIXED",
- "maximum_redemptions": "1/3M",
- "maximum_reward_cumulative": "1/3M",
- "maximum_reward_per_transaction": 0,
- "merchant_categories": [
- {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}
], - "merchant_website": "string",
- "minimum_spend": 0,
- "offer_budget": {
- "currency_code": "USD",
- "estimated_allocation": 0,
- "excluded_from_search": true,
- "limit": 0
}, - "offer_mode": "ONLINE",
- "offer_type": "CARD_LINKED",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "terms_and_conditions": "string",
- "valid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}
}
Updates an Offer.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
category | string (TripleOfferCategory) Enum: "AUTOMOTIVE" "CHILDREN_AND_FAMILY" "ELECTRONICS" "ENTERTAINMENT" "FINANCIAL_SERVICES" "FOOD" "HEALTH_AND_BEAUTY" "HOME" "OFFICE_AND_BUSINESS" "RETAIL" "SERVICES_AND_SUBSCRIPTIONS" "TRAVEL" "UTILITIES_AND_TELECOM" triple Offer Category |
expiration_date | string or null <date> (OfferExpirationDate) If specified, the last date on which the offer is valid. |
headline | string (OfferHeadline) [ 6 .. 100 ] characters The headline or title for the offer, appropriate for top-level display. |
Array of objects or null (OfferMerchantCategories) [ 1 .. 25 ] items The Merchant Category Codes included for a categorical offer. | |
merchant_website | string or null <url> (MerchantWebsite) <= 2000 characters ^https://.+$ |
{- "category": "AUTOMOTIVE",
- "expiration_date": "2021-12-31",
- "headline": "string",
- "merchant_categories": [
- {
- "code": "7998"
}
], - "merchant_website": "string"
}
{- "activation_duration_in_days": 0,
- "activation_required": true,
- "category": "AUTOMOTIVE",
- "category_tags": "string",
- "currency_code": "USD",
- "description": "string",
- "effective_date": "2021-12-01",
- "excluded_dates": [
- "2021-12-25"
], - "expiration_date": "2021-12-31",
- "external_id": "string",
- "headline": "string",
- "id": "triple-abc-123",
- "is_activated": true,
- "invalid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}, - "logo_url": "string",
- "marketing_fee_currency_code": "USD",
- "marketing_fee_rate": 0,
- "marketing_fee_value": 0,
- "marketing_fee_type": "FIXED",
- "maximum_redemptions": "1/3M",
- "maximum_reward_cumulative": "1/3M",
- "maximum_reward_per_transaction": 0,
- "merchant_categories": [
- {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}
], - "merchant_website": "string",
- "minimum_spend": 0,
- "offer_budget": {
- "currency_code": "USD",
- "estimated_allocation": 0,
- "excluded_from_search": true,
- "limit": 0
}, - "offer_mode": "ONLINE",
- "offer_type": "CARD_LINKED",
- "reward_rate": 0,
- "reward_type": "FIXED",
- "reward_value": 0,
- "terms_and_conditions": "string",
- "valid_day_parts": {
- "friday": {
- "times": [
- "00:30-13:30"
]
}, - "monday": {
- "times": [
- "00:30-13:30"
]
}, - "saturday": {
- "times": [
- "00:30-13:30"
]
}, - "sunday": {
- "times": [
- "00:30-13:30"
]
}, - "thursday": {
- "times": [
- "00:30-13:30"
]
}, - "tuesday": {
- "times": [
- "00:30-13:30"
]
}, - "wednesday": {
- "times": [
- "00:30-13:30"
]
}
}
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "status_code": 400,
- "content": {
- "details": [
- null
], - "error_message": "The request is malformed.",
- "exception": "TripleBadRequestError"
}
}
Operations related to managing Portfolios of Publishers.
Partners who manage Card Programs for multiple Publishers may wish to organize those Publishers into Portfolios. Portfolios allow Offer Exclusions to be applied across multiple Publishers without having to add each Publisher to each Offer Exclusion.
Returns a list of Publishers, optionally filtered.
Currently, this endpoint has a hard limit of returning up to 1,000 results. Future API releases may support paging results.
publisher_external_id | string [ 1 .. 255 ] characters Partner-provided external ID of a Publisher. This parameter is ignored unless the client is a Portfolio Manager. |
{- "publishers": [
- {
- "assumed_name": "string",
- "external_id": "string",
- "id": "triple-abc-123"
}
], - "total": 0
}
required | object (StrictAddress) A physical address in the world, with required fields. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. |
assumed_name required | string (PublisherAssumedName) [ 1 .. 100 ] characters ^(?!\s).+(?<!\s)$ Assumed legal name of the Publisher |
external_id required | string (Publisher External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Publisher. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Publisher within the scope of its parent Portfolio Manager. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
revenue_share | number (PublisherRevenueShare) [ 0 .. 100 ] The percent-based revenue share of this Publisher. Only Portfolio Managers may set this value for their Publishers. If set, this will override the value set at the Portfolio Manager level. |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "external_id": "string",
- "revenue_share": 1.125
}
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "portfolio_manager_id": "triple-abc-123",
- "revenue_share": 1.125,
- "updated_at": "2021-12-01T01:59:59.000Z"
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "portfolio_manager_id": "triple-abc-123",
- "revenue_share": 1.125,
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Updates a Publisher.
Currently, only the Publisher name and address may be updated.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
object (StrictAddress) A physical address in the world, with required fields. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. | |
assumed_name required | string (PublisherAssumedName) [ 1 .. 100 ] characters ^(?!\s).+(?<!\s)$ Assumed legal name of the Publisher |
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string"
}
{- "address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "assumed_name": "string",
- "created_at": "2021-12-01T01:59:59.000Z",
- "external_id": "string",
- "id": "triple-abc-123",
- "portfolio_manager_id": "triple-abc-123",
- "revenue_share": 1.125,
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Lists Rewards and associated Transaction details that triple has matched to active Offers in the last 90 days.
status | string Default: "PENDING_MERCHANT_APPROVAL" Enum: "REJECTED" "PENDING_REVIEW" "PENDING_MERCHANT_APPROVAL" "DENIED_BY_MERCHANT" "PENDING_MERCHANT_FUNDING" "PENDING_TRANSFER_TO_PUBLISHER" "DISTRIBUTED_TO_PUBLISHER" "DISTRIBUTED_TO_CARDHOLDER" The Reward status.
|
page | integer Default: 1 The page of results for returned Objects. |
page_size | integer Default: 1000 The size of pages for returned Objects. |
{- "rewards": [
- {
- "card_bin": "444789",
- "card_last_4": "0001",
- "merchant_complete_address": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "merchant_name": "string",
- "offer_external_id": "string",
- "offer_headline": "string",
- "offer_id": "triple-abc-123",
- "reward_id": "triple-abc-123",
- "reward_amount": 0,
- "reward_currency_code": "USD",
- "status": "REJECTED",
- "transaction_amount": 12,
- "transaction_currency_code": "USD",
- "transaction_id": "triple-abc-123",
- "transaction_timestamp": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
This endpoint provides significant performance advantages, over PATCHing single rewards, when updating large numbers of reward statuses.
This endpoint is currently rate limited at 5 requests per minute.
Request Semantics:
This endpoint uses all-or-nothing semantics. If even one reward fails to update, the entire request will return a failure response.
Constraints:
PENDING_MERCHANT_APPROVAL
to DENIED_BY_MERCHANT
or
PENDING_MERCHANT_FUNDING
.DENIED_BY_MERCHANT
, the notes
field must be populated
with an explanation for the denial.DISTRIBUTED_TO_PUBLISHER
to DISTRIBUTED_TO_CARDHOLDER
.rejection
and notification
fields.action required | string Value: "update_status" The action to take |
required | Array of objects (RewardStatusPatchBulkItem) [ 1 .. 1000 ] items |
{- "action": "update_status",
- "items": [
- {
- "reward_id": "triple-abc-123",
- "status": "REJECTED",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "notes": "string",
- "notification": true
}
]
}
{- "errors": [
- {
- "status_code": 0,
- "content": {
- "details": [ ],
- "error_message": "string",
- "exception": "TripleBadRequestError"
}, - "index": 0
}
], - "result": "SUCCESS"
}
This endpoint provides significant performance advantages, over PATCHing single rewards, when updating large numbers of reward statuses. The behavior of the two endpoints is nearly the same except for some minor differences in how errors are handled.
You should check the result_type
of the response to handle errors for
individual items. If the top-level request returns a Client Error response
(response codes 400-499), no rewards from the batch were updated.
This endpoint is currently rate limited at 5 requests per minute.
Constraints:
PENDING_MERCHANT_APPROVAL
to DENIED_BY_MERCHANT
or
PENDING_MERCHANT_FUNDING
.DENIED_BY_MERCHANT
, the notes
field must be populated
with an explanation for the denial.DISTRIBUTED_TO_PUBLISHER
to DISTRIBUTED_TO_CARDHOLDER
.rejection
and notification
fields.action required | string Value: "update_status" The action to take |
reward_ids required | Array of strings (EntityId) [ 1 .. 1000 ] items [ items [ 1 .. 100 ] characters ] |
required | object (RewardStatusPatch) |
{- "action": "update_status",
- "reward_ids": [
- "triple-abc-123"
], - "reward_status": {
- "status": "REJECTED",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "notes": "string",
- "notification": true
}
}
{- "failures": [
- {
- "errors": [
- {
- "status_code": 0,
- "content": {
- "details": [ ],
- "error_message": "string",
- "exception": "TripleBadRequestError"
}
}
], - "index": 0
}
], - "result_summary": { },
- "result_type": "COMPLETE_FAILURE"
}
Transitions a Reward from its current status to a new status.
Content Providers may only update rewards with a status of
PENDING_MERCHANT_APPROVAL
to DENIED_BY_MERCHANT
or
PENDING_MERCHANT_FUNDING
.
When updating a reward to DENIED_BY_MERCHANT
, the notes
field must be populated
with an explanation for the denial.
Publishers (and Portfolio Managers) may only update rewards with a
status of DISTRIBUTED_TO_PUBLISHER
to DISTRIBUTED_TO_CARDHOLDER
.
Only Triple may set the rejection
and notification
fields.
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
status required | string (RewardStatus) Enum: "REJECTED" "PENDING_REVIEW" "PENDING_MERCHANT_APPROVAL" "DENIED_BY_MERCHANT" "PENDING_MERCHANT_FUNDING" "PENDING_TRANSFER_TO_PUBLISHER" "DISTRIBUTED_TO_PUBLISHER" "DISTRIBUTED_TO_CARDHOLDER" The Reward status.
|
rejection | string (RewardRejection) Enum: "PURCHASE_AMOUNT_TOO_LOW" "ACTIVATION_REQUIRED" "MAX_USES_MET" "MAX_REWARD_MET" "DAY_OF_WEEK_RESTRICTION" "TIME_OF_WEEK_RESTRICTION" "EXCLUDED_DATE" "NON_PARTICIPATING_LOCATION" "OFFER_FILTER" "OTHER" The Reward rejection type.
|
notes | string (RewardRejectionNotes) <= 512 characters A text description or additional information about why the Offer was rejected or denied by the merchant. This field is not intended to be displayed to cardholders. |
notification | boolean (RewardNotification) Default: true Whether to publish a notification about a reward status update or not. |
{- "status": "REJECTED",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "notes": "string",
- "notification": true
}
{- "amount": 0,
- "currency_code": "USD",
- "notes": "string",
- "offer_id": "triple-abc-123",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "reward_id": "triple-abc-123",
- "status": "REJECTED",
- "status_updated_at": "2021-12-01T01:59:59.000Z"
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "reward_id": "triple-abc-123",
- "transaction_id": "triple-abc-123",
- "offer_id": "triple-abc-123",
- "offer_external_id": "string",
- "transaction_timestamp": "2021-12-01T01:59:59.000Z",
- "card_bin": "444789",
- "card_last_4": "0001",
- "transaction_amount": 12,
- "transaction_currency_code": "USD",
- "reward_amount": 0,
- "reward_currency_code": "USD",
- "offer_headline": "string",
- "merchant_name": "string",
- "merchant_complete_address": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "status": "REJECTED"
}
Returns information about the API logged in user
This endpoint is for internal use only and will change between versions. Use at your own risk.
{- "client_id": "string",
- "content_provider": "string",
- "portfolio_manager": "string",
- "publisher": "string"
}
Operations related to reporting Transactions and checking related reward eligibility and status.
All Transactions for Purchases and Returns must be uploaded for Card Accounts, and Transaction amounts should not include "cash back".
A Transaction that matches an Offer will go through the following stages:
Each Transaction uploaded to triple must be linked to a Card Account. If a Card Account does not exist, a best effort will be made to create one with a "NOT_ENROLLED" status. For this to succeed, the Card Program must be resolvable based on the external ID(s) provided in the request.
Transactions must be uploaded within 7 days of the transaction date to be eligible for a Reward. Historic Transactions may be uploaded to improve Offer Recommendations and targeting but are not eligible for Rewards.
publisher_external_id | string [ 1 .. 255 ] characters Partner-provided external ID of a Publisher. This parameter is ignored unless the client is a Portfolio Manager. |
card_program_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
card_account_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
transaction_external_id | string [ 1 .. 255 ] characters Partner-provided external ID |
start_date | string <date> ^\d{4}-\d{2}-\d{2} Example: start_date=2022-06-01 Include only transactions starting from this date (YYYY-mm-dd) |
end_date | string <date> ^\d{4}-\d{2}-\d{2} Example: end_date=2022-06-30 Include only transactions through this date (YYYY-mm-dd) |
matched | boolean Include only transactions matched to an active offer. See the Reward Details for more information, such as whether an award is approved. |
{- "transactions": [
- {
- "amount": 12,
- "card_account_id": "triple-abc-123",
- "card_account_external_id": "string",
- "card_bin": "444789",
- "card_last_4": "0001",
- "created_at": "2021-12-01T01:59:59.000Z",
- "currency_code": "USD",
- "debit": true,
- "description": "Pittsburgh Zoo",
- "external_id": "string",
- "id": "triple-abc-123",
- "matching_status": "HISTORIC_TRANSACTION",
- "merchant_address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "processor_mid": "9000012345",
- "processor_mid_type": "VISA_VMID",
- "reward_details": [
- {
- "merchant_logo_url": "string",
- "offer_title": "string",
- "offer_reward_rate": 0,
- "offer_reward_type": "FIXED",
- "offer_reward_value": 0,
- "amount": 0,
- "currency_code": "USD",
- "notes": "string",
- "offer_id": "triple-abc-123",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "reward_id": "triple-abc-123",
- "status": "REJECTED"
}
], - "timestamp": "2021-12-01T01:59:59.000Z",
- "transaction_type": "PURCHASE",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
], - "total": 0
}
Important notes:
Note: Triple will make every effort to match transactions with any information that is submitted. However, without the above fields, we make no guarantee that a transaction will be matched and/or submitted for a cardholder reward or marketing fee.
amount required | number (TransactionAmount) > 0 The amount of the transaction. An error will be returned if the field contains fractional amounts smaller than those allowed by the transaction's currency code. |
card_account_external_id required | string (Card Account External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Account. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Account within the scope of its parent Card Program. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
card_bin required | string (CardBIN) = 6 characters ^\d{6}$ The Bank Identification Number (BIN) of a payment card. |
card_last_4 required | string (CardLast4) = 4 characters ^\d{4}$ The last four digits of the Primary Account Number (PAN) of a card. |
card_program_external_id required | string (Card Program External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Card Program. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Card Program within the scope of its parent Publisher. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
currency_code | string (CurrencyCode) = 3 characters ^[A-Z]{3}$ Default: "USD" 3-character ISO-4217 currency code. Only USD is currently supported. Contact your Triple representative for support with additional currencies. Note that some values are not supported, particularly test and fund codes. |
debit required | boolean (TransactionIsDebit) Whether this is a debit or credit |
description required | string (TransactionDescription) [ 1 .. 256 ] characters The transaction description, usually the merchant name |
external_id required | string (Transaction External ID) [ 1 .. 255 ] characters ^[a-z0-9]([-_\.a-z0-9]{0,48}[a-z0-9])?$ Partner-provided, external ID. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for Transactions within the scope of the associated Card Account. |
merchant_category_code | string (MerchantCategoryCode) = 4 characters ^\d{4}$ The 4-digit Merchant Category Code |
object (Address) A physical address in the world. triple uses address validation services to update and standardize addresses on our platform. Address data sent to the API may be updated as we process, validate, and normalize addresses. NOTE: Though not marked as required, the street address, postal code, and country code are required for transaction matching to function properly. | |
processor_mid | string (ProcessorMIDValue) [ 1 .. 50 ] characters The Merchant ID (MID) value |
processor_mid_type | string (ProcessorMIDType) Enum: "AMEX_SE_NUMBER" "DISCOVER_MID" "MC_AUTH_LOC_ID" "MC_AUTH_ACQ_ID" "MC_AUTH_ICA" "MC_CLEARING_LOC_ID" "MC_CLEARING_ACQ_ID" "MC_CLEARING_ICA" "MERCHANT_PROCESSOR" "NCR" "VISA_VMID" "VISA_VSID" The type of Merchant ID |
publisher_external_id | string (Publisher External ID) [ 1 .. 255 ] characters ^(?!\d{3}-\d\d-\d{4}$) Partner-provided, external ID for a Publisher. External IDs should be stable and never sensitive. External IDs do not need to be globally unique, but we encourage the use of UUIDs. They must be unique for the Publisher within the scope of its parent Portfolio Manager. To protect against accidental inclusion of sensitive personal information, external IDs may not be 9-digit numbers or use the US Tax ID format (###-##-####). |
timestamp required | string <date-time> (Timestamp) RFC 3339 date time used for creation and mod times |
transaction_type required | string (TransactionType) Enum: "CHECK" "DEPOSIT" "FEE" "PAYMENT" "PURCHASE" "REFUND" "TRANSFER" "WITHDRAWAL" The type of transaction. triple will only calculate offers based on a history of Purchases and Refunds. |
{- "amount": 12,
- "card_account_external_id": "string",
- "card_bin": "444789",
- "card_last_4": "0001",
- "card_program_external_id": "string",
- "currency_code": "USD",
- "debit": true,
- "description": "Pittsburgh Zoo",
- "external_id": "string",
- "merchant_category_code": "7998",
- "merchant_address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "processor_mid": "9000012345",
- "processor_mid_type": "VISA_VMID",
- "publisher_external_id": "string",
- "timestamp": "2021-12-01T01:59:59.000Z",
- "transaction_type": "PURCHASE"
}
{- "amount": 12,
- "card_account_id": "triple-abc-123",
- "card_account_external_id": "string",
- "card_bin": "444789",
- "card_last_4": "0001",
- "created_at": "2021-12-01T01:59:59.000Z",
- "currency_code": "USD",
- "debit": true,
- "description": "Pittsburgh Zoo",
- "external_id": "string",
- "id": "triple-abc-123",
- "matching_status": "HISTORIC_TRANSACTION",
- "merchant_address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "processor_mid": "9000012345",
- "processor_mid_type": "VISA_VMID",
- "reward_details": [
- {
- "merchant_logo_url": "string",
- "offer_title": "string",
- "offer_reward_rate": 0,
- "offer_reward_type": "FIXED",
- "offer_reward_value": 0,
- "amount": 0,
- "currency_code": "USD",
- "notes": "string",
- "offer_id": "triple-abc-123",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "reward_id": "triple-abc-123",
- "status": "REJECTED"
}
], - "timestamp": "2021-12-01T01:59:59.000Z",
- "transaction_type": "PURCHASE",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Important notes:
Note: Triple will make every effort to match transactions with any information that is submitted. However, without the above fields, we make no guarantee that a transaction will be matched and/or submitted for a cardholder reward or marketing fee.
This endpoint provides significant performance advantages, over POSTing single transactions, when creating large numbers of transactions. The behavior of the two endpoints is nearly the same except for some minor differences in how errors are handled.
You should check the result_type
of the response to handle errors for
individual items. If the top-level request returns a Client Error response
(response codes 400-499), no transactions from the batch were created.
This endpoint is currently rate limited at 100 requests per minute.
action required | string Value: "create" The action to take |
required | Array of objects (TransactionPost) [ 1 .. 1000 ] items |
{- "action": "create",
- "transactions": [
- {
- "amount": 12,
- "card_account_external_id": "string",
- "card_bin": "444789",
- "card_last_4": "0001",
- "card_program_external_id": "string",
- "currency_code": "USD",
- "debit": true,
- "description": "Pittsburgh Zoo",
- "external_id": "string",
- "merchant_category_code": "7998",
- "merchant_address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "processor_mid": "9000012345",
- "processor_mid_type": "VISA_VMID",
- "publisher_external_id": "string",
- "timestamp": "2021-12-01T01:59:59.000Z",
- "transaction_type": "PURCHASE"
}
]
}
{- "failures": [
- {
- "errors": [
- {
- "status_code": 0,
- "content": {
- "details": [ ],
- "error_message": "string",
- "exception": "TripleBadRequestError"
}
}
], - "index": 0
}
], - "result_summary": { },
- "result_type": "COMPLETE_FAILURE"
}
id required | string (EntityId) [ 1 .. 100 ] characters Example: triple-abc-123 The triple-defined ID for the entity. |
{- "amount": 12,
- "card_account_id": "triple-abc-123",
- "card_account_external_id": "string",
- "card_bin": "444789",
- "card_last_4": "0001",
- "created_at": "2021-12-01T01:59:59.000Z",
- "currency_code": "USD",
- "debit": true,
- "description": "Pittsburgh Zoo",
- "external_id": "string",
- "id": "triple-abc-123",
- "matching_status": "HISTORIC_TRANSACTION",
- "merchant_address": {
- "city": "PITTSBURGH",
- "complete": "7370 BAKER ST, STE 100\nPITTSBURGH, PA 15206",
- "country_code": "US",
- "country_subdivision_code": "PA",
- "latitude": 40.440624,
- "longitude": -79.995888,
- "postal_code": "15206",
- "street_address": "7370 BAKER ST, STE 100\n"
}, - "merchant_category": {
- "code": "7998",
- "description": "Aquariums, Dolphinariums, Seaquariums, and Zoos"
}, - "processor_mid": "9000012345",
- "processor_mid_type": "VISA_VMID",
- "reward_details": [
- {
- "merchant_logo_url": "string",
- "offer_title": "string",
- "offer_reward_rate": 0,
- "offer_reward_type": "FIXED",
- "offer_reward_value": 0,
- "amount": 0,
- "currency_code": "USD",
- "notes": "string",
- "offer_id": "triple-abc-123",
- "rejection": "PURCHASE_AMOUNT_TOO_LOW",
- "reward_id": "triple-abc-123",
- "status": "REJECTED"
}
], - "timestamp": "2021-12-01T01:59:59.000Z",
- "transaction_type": "PURCHASE",
- "updated_at": "2021-12-01T01:59:59.000Z"
}
Post User Events
For the best user experience, post user events to the triple API as they occur. This allows triple to provide users with a more personalized user experience by responding to user preference signals in near-real time.
event_type | description |
---|---|
HIDE_OFFER | User requests to never see an offer again |
LESS_LIKE_THIS_OFFER | User dislikes an offer |
MORE_LIKE_THIS_OFFER | User likes an offer |
OFFER_ENTERS_VIEWPORT | Offer details enter the user's viewport |
OFFER_EXITS_VIEWPORT | Offer details exit the user's viewport |
event_timestamp required | string <date-time> (Timestamp) RFC 3339 date time used for creation and mod times |
event_type required | string Identifies the Event type |
object Geo-political locality, given as a country code and postal code | |
object GeoCoordinates given as latitude, longitude pair | |
card_account_id required | string (EntityId) [ 1 .. 100 ] characters The triple-defined ID for the entity. |
user_interface required | string (UserInterface) Enum: "WEB" "MOBILE" "POINT_OF_SALE" Enum of User Interfaces |
offer_id required | string (EntityId) [ 1 .. 100 ] characters The triple-defined ID for the entity. |
{- "event_timestamp": "2021-12-01T01:59:59.000Z",
- "event_type": "HIDE_OFFER",
- "user_postal_code_location": {
- "country_code": "US",
- "postal_code": "15206"
}, - "user_coordinates": {
- "latitude": 40.440624,
- "longitude": -79.995888
}, - "card_account_id": "triple-abc-123",
- "user_interface": "WEB",
- "offer_id": "triple-abc-123"
}
{- "ok": true
}
Get user preferences for a card account.
card_account_id required | string Example: triple-card-123 The triple card account id to get preferences for. |
preference | string Enum: "HIDE_OFFER" "LESS_LIKE_THIS_OFFER" "MORE_LIKE_THIS_OFFER" "OFFER_ACTIVATION" Example: preference=LESS_LIKE_THIS_OFFER Filter the response to this single preference. |
{- "user_preferences": [
- {
- "offer_id": "offer-456",
- "preference": "HIDE_OFFER",
- "updated_at": "2023-11-22T01:59:59.000Z"
}
]
}
Delete one or all user preferences for a card account.
card_account_id required | string Example: triple-card-123 The triple card account id to delete preferences for. |
offer_id | string Example: offer_id=triple-offer-123 A specific triple offer id to delete a preference for. |
{- "total": 17
}
Note: This is not a valid triple API endpoint.
If a Publisher or Portfolio Manager subscribes to receive notifications we will send reward status messages to the registered endpoint. This describes what our outbound webhook call will provide to the triple partner.
The payload is contained as a string within the Message
key sent by AWS SNS.
The transaction_amount
and reward_amount
fields are passed as
strings but always contain decimal numerics.
The Transaction webhook payload is contained within a Notification type SNS message. The AWS documentation on this format is available in AWS SNS Message and JSON formats.
publisher_external_id | string The external identifier for the publisher |
card_program_external_id required | string The external identifier for the card program |
card_account_external_id required | string The external identifier for the card account |
transaction_external_id required | string The matching transaction which caused the reward to be triggered |
offer_id required | string The identifier for the offer |
reward_id required | string The identifier for the reward |
merchant_name | string The full name of the merchant offering the reward |
reward_status required | string The status of the reward which currently is one of PENDING_MERCHANT_APPROVAL and DENIED_BY_MERCHANT with more statuses in the pipeline. |
reward_amount | string The amount of the reward earned |
reward_currency_code required | string The currency code of the reward |
transaction_timestamp required | string The timestamp of the initial transaction |
transaction_amount required | string The amount of initial transaction |
transaction_currency_code required | string The currency code of the initial transaction |
notes | string A text description or additional information about why the Offer was rejected or denied by the merchant. This field is not intended to be displayed to cardholders. |
rejection | string Enum: "ACTIVATION_REQUIRED" "DAY_OF_WEEK_RESTRICTION" "EXCLUDED_DATE" "MAX_REWARD_MET" "MAX_USES_MET" "NON_PARTICIPATING_LOCATION" "OTHER" "PURCHASE_AMOUNT_TOO_LOW" "TIME_OF_WEEK_RESTRICTION" |
{- "publisher_external_id": "pub-1231231",
- "card_program_external_id": "card-program-1234-5678",
- "card_account_external_id": "card-account-1234-5678",
- "transaction_external_id": "tx-12314",
- "offer_id": "34",
- "reward_id": "reward-1231231",
- "merchant_name": "Acme Tools",
- "reward_status": "PENDING_MERCHANT_APPROVAL",
- "reward_amount": "0.120",
- "reward_currency_code": "USD",
- "transaction_timestamp": "2022-07-30T00:43:00Z",
- "transaction_amount": "12.340",
- "transaction_currency_code": "USD"
}
Subscribe to notifications using a user-supplied webhook.
Triple notifications are implemented using AWS SNS. The AWS documentation for subscription confirmation message details is available in AWS SNS Message and JSON formats.
After receiving a successful response from this endpoint, you will receive a confirmation POST to the supplied webhook similar to the following to validate your subscription:
{
"Type": "SubscriptionConfirmation",
"MessageId": "...",
"TopicArn": "arn:aws:sns:region:account-id:sns-topic-arn",
"Message": "You have chosen to subscribe to the topic arn:aws:sns:region:account-id:sns-topic-arn.\n
To confirm the subscription, visit the SubscribeURL included in this message.",
"SubscribeURL": "https://sns.region.amazonaws.com/?Action=ConfirmSubscription&TopicArn=...",
"Timestamp" :"2022-01-01T00:00:00.000Z",
"SignatureVersion": "1",
"Signature": "...",
"SigningCertURL": "..."
}
After issuing a GET request for the SubscribeURL
you will receive a response like the following:
<ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
<ConfirmSubscriptionResult>
<SubscriptionArn>...</SubscriptionArn>
</ConfirmSubscriptionResult>
<ResponseMetadata>
<RequestId>...</RequestId>
</ResponseMetadata>
</ConfirmSubscriptionResponse>
The SubscriptionArn in the response can be used to unsubscribe from the topic by hitting the DELETE /notifications/$SubscriptionArn link in the API. Alternatively for received messages they also contain an UnsubscribeURL
which will do the same.
For several reward statuses you'll get an SNS message from AWS for example:
{
"Type": "Notification",
"MessageId": "...",
"TopicArn": "...",
"Subject": "Reward Pending Merchant Approval",
"Message": "{\"publisher_external_id\": null, \"card_program_external_id\": null, \"card_account_external_id\": null, \"transaction_external_id\": \"tx-1\", \"merchant_name\": \"L'Osteria\", \"reward_status\": \"PENDING_MERCHANT_APPROVAL\", \"reward_amount\": \"0.00\", \"currency_code\": \"USD\", \"transaction_timestamp\": \"2022-08-03T01:00:00Z\", \"transaction_amount\": \"20\", \"transaction_currency_code\": \"USD\"}",
"Timestamp": "2022-01-01T00:00:00.000Z",
"SignatureVersion": "1",
"Signature": "...",
"SigningCertURL": "...",
"UnsubscribeURL": "...",
"MessageAttributes": {
"publisher_id": {
"Type": "String",
"Value": "2"
}
}
}
If you subscribe with a publisher account, you will receive any applicable statuses for that publisher that occur.
When you subscribe with a portfolio manager account you will receive notifications on statuses for all publishers in a single subscription.
endpoint required | string The webhook endpoint you'd like subscriptions to go to |
{- "endpoint": "string"
}
{- "endpoint": "string",
- "message": "Subscription to https://my.webhook.numo.com successfully added"
}
subscriptionArn required | string (SubscriptionArn) >= 25 characters Example: arn:aws:sns:us-east-1:1234567890:transaction-matching-notifications:7689338f-f44f-4400-a72f-16e09be41268 The AWS ARN for the SNS Subscription |
{- "message": "Successfully unsubscribed a4d2f2a2-9d68-4d5f-b840-b5dee436cdfd",
- "subscriptionArn": "string"
}
subscriptionArn required | string (SubscriptionArn) >= 25 characters Example: arn:aws:sns:us-east-1:1234567890:transaction-matching-notifications:7689338f-f44f-4400-a72f-16e09be41268 The AWS ARN for the SNS Subscription |
{- "portfolio_manager_id": "string",
- "publisher_id": "string"
}