# American Express Membership Rewards
source: https://developer.mastercard.com/mastercard-gateway/documentation/payment-methods/cards/int-network/amex/index.md

The Mastercard Gateway allows you to offer American Express Membership Rewards as a method of payment to your payers.

American Express Membership Rewards is a customer loyalty program that rewards payers for using their American Express debit/credit cards. The payers enrolled in the program earn points on purchases made with the card and can subsequently redeem the available points for a currency equivalent when making an eligible purchase with the card. For more details on the rewards program, see the American Express website.

Support for American Express Membership Rewards through the gateway is provided for:

* Internet transactions (`transaction.source`=INTERNET)
* One-off payments
* Authorize transactions (`apiOperation`=AUTHORIZE)

## Prerequisites {#prerequisites}

To offer American Express Membership Rewards through the gateway:

* Sign up with the American Express Membership Rewards program.
* your merchant profile on the gateway must be configured for the American Express Membership Rewards acquirer by your payment service provider.

## Adding support for American Express Membership Rewards to your integration {#adding-support-for-american-express-membership-rewards-to-your-integration}

If you want to offer American Express Membership Rewards as a payment method on your own payment page, you can integrate using [Direct Payment](https://developer.mastercard.com/mastercard-gateway/documentation/integrations-types/direct-payment/index.md).
Warning: Integrate with API version 100 for full compatibility. American Express Membership Rewards functionality is supported on [Direct Payment](https://developer.mastercard.com/mastercard-gateway/documentation/integrations-types/direct-payment/index.md), from API version 46 and later.

The integration steps that you need to implement depend on the payment scenarios you want to support on your shop site:

* If you want to present the rewards balance available on a card, you need [Step 1](https://developer.mastercard.com/mastercard-gateway/documentation/payment-methods/cards/int-network/amex/index.md#step-1-check-if-a-rewards-balance-is-available) only.
* If you want to offer the payer the option to redeem rewards points for a payment, both [Step 1](https://developer.mastercard.com/mastercard-gateway/documentation/payment-methods/cards/int-network/amex/index.md#step-1-check-if-a-rewards-balance-is-available) and [Step 2](https://developer.mastercard.com/mastercard-gateway/documentation/payment-methods/cards/int-network/amex/index.md#step-2-offer-the-payer-to-redeem-rewards-points) are required.

### Step 1: Check if a Rewards Balance is Available {#step-1-check-if-a-rewards-balance-is-available}

When a payer chooses to pay using American Express Membership Rewards, you must first check if a rewards balance is available. Only offer American Express Membership Rewards if a rewards balance is available for the payer to spend. You can also check the rewards balance in the event of a balance inquiry from a payer who has their account set up on your shop site.

You can request the rewards balance on the card using the APIBalance Inquiry operation. It is important to present the balance information to the payer to enable them to redeem a valid number of rewards (points) for their purchases. The balance information provides the maximum and minimum spend amounts, and also the incremental spend amount. For example, if the minimum spend amount is $100, the maximum spend amount is $500, and the incremental spend amount is $20, then the payer can redeem points for purchases between $100 and $500 in increments of $20. If the purchase is for $155, they can redeem $140 from rewards points and will need to pay the balance of $15 on their card.

You need to provide the following fields in the Balance Inquiry request:

* `sourceOfFunds.type`=CARD
* `sourceOfFunds.provided.card.number`: The debit/credit card number associated with the American Express Membership Rewards for which you are requesting rewards balance information.
* `sourceOfFunds.provided.card.expiry`
* `sourceOfFunds.provided.card.securityCode`

**Balance Inquiry API Reference** [\[REST\]](https://developer.mastercard.com/mastercard-gateway/documentation/api-reference/v100/rest/api-ops/index.md#transaction) [\[NVP\]](https://developer.mastercard.com/mastercard-gateway/documentation/api-reference/v100/nvp/api-ops/index.md#transaction)

The response fields for a Balance Inquiry request will determine your next step, as shown in the table below.

|                                                                                                                                                                                                                                                                **Balance Inquiry Response Fields**                                                                                                                                                                                                                                                                 |                                                                                                                   What This Means...                                                                                                                    |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **result**=SUCCESS **balanceId**: This is a unique identifier generated by the gateway when a rewards balance is available for the card. **availableBalance.reward.amount** **availableBalance.reward.currency** **availableBalance.reward.points** **availableBalance.reward.program**=AMERICAN_EXPRESS_MEMBERSHIP_REWARDS **availableBalance.reward.conversionRate** **availableBalance.reward.incrementalSpendAmount** **availableBalance.reward.maximumSpendAmount** **availableBalance.reward.minimumSpendAmount** **response.gatewayCode**=BALANCE_AVAILABLE | The balance information for the card is available. Note that the available balance may be zero. You can present this information to your payer and subsequently submit an authorization for this card if the payer wishes to redeem the rewards points. |
| **result**=SUCCESS **response.gatewayCode**=NO_BALANCE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | The balance information for the card is not available, for example, card not enrolled in the rewards program. The payer will be unable to use rewards points for the payment.                                                                           |
| **result**=FAILURE **response.gatewayCode**=TIMED_OUT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | The balance inquiry request was unsuccessful, for example, the request timed out to the acquirer, system error. You can try again after some time.                                                                                                      |

### Step 2: Offer the Payer to Redeem Rewards Points {#step-2-offer-the-payer-to-redeem-rewards-points}

If a rewards balance is available, you can offer the payer to redeem rewards points for their payment. If the payer wishes to spend rewards, submit an authorization for the card with the rewards amount. The rewards amount may cover some or all of the order amount (but must not exceed the order amount). As a prerequisite, a successful balance inquiry for the card must have been performed through the gateway before submitting the authorization (you will need to provide the balance ID returned for the balance inquiry request in the authorization transaction).

You need to provide the following fields in the Authorize request:

* `order.reward.balanceId`: The value for the balanceId field returned to you in the BALANCE_INQUIRY response.

* `order.reward.amount`: The amount the payer has chosen to pay by redeeming rewards points.
  If successful, the following response fields are returned in addition to the standard fields:

* `order.reward.amount`, echoed from your request.

* `order.reward.points`: The rewards value (points) that the payer has redeemed as full or part payment for this order.

* `order.reward.program`=AMERICAN_EXPRESS_MEMBERSHIP_REWARDS


  If these fields are not returned in the response, it means that the rewards authorization is not successful,in other words, the payer cannot redeem the rewards points. In this case, you must present the payer with the option to proceed with the order without redeeming the rewards amount.

Warning: If the rewards authorization is successful but the card authorization is not successful, you can proceed as you would for a failed card transaction. **Authorize API Reference** [\[REST\]](https://developer.mastercard.com/mastercard-gateway/documentation/api-reference/v100/rest/api-ops/index.md#transaction) [\[NVP\]](https://developer.mastercard.com/mastercard-gateway/documentation/api-reference/v100/nvp/api-ops/index.md#transaction)

## Captures and Refunds {#captures-and-refunds}

You can perform captures and refunds on an order containing rewards amount similar to a card transaction. The transactions, if successful, will be settled into the card account. Standalone captures and refunds are not supported with the rewards amount.

## Branding requirements {#branding-requirements}

When displaying American Express Membership Rewards as a payment option on your payment page, you must comply with the branding requirements from American Express. Also provide a link to the American Express Membership Rewards terms and conditions on your checkout page. For more information on branding requirements, contact American Express.

## Test and go-live {#test-and-go-live}

You can [test your American Express Membership Rewards card integration](https://developer.mastercard.com/mastercard-gateway/documentation/test-cards/index.md) using your test merchant profile.
