---
title: Installment payment methods
url: amazon-pay-checkout/installment-payment-methods.html
---

Amazon Pay offers multiple installment payment options. Some installment payment methods require activation in Seller Central while others are available as soon as you make the required integration update. Follow these steps to enable installment payment methods for your buyers:

1. Review <a href="../amazon-pay-checkout/installment-payment-methods.md#1-payment-method-requirements">payment method requirements</a> to determine which installment payment methods are available in your region and whether they need to be activated. If the payment method requires activation, make sure your integration pattern is supported before visiting Seller Central to sign up with the installment payment provider.
2. Follow the instructions below to send Amazon Pay the estimated order amount for the transaction. You can either set the value when the Amazon Pay button is rendered and any time that estimate changes after the button render or you can set it at time of button click. Amazon Pay will use the estimated order amount to determine whether the order meets the installment provider’s minimum order price threshold. If the order does not meet the minimum amount, the buyer will not see the installment payment method in their Amazon wallet. 

* TOC
{:toc}

* * *

### 1. Payment method requirements

Make sure your integration pattern is supported before you enable Affirm or Barclays.

<table width="100%" border="1">
    <tbody>
        <tr id=''>
            <td id='' style='width: 28%;'>
                <br /></td>
            <td id='' style='width: 18%; font-weight: bold;' class='bold'>Affirm
                <br /></td>
            <td id='' style='width: 18%; font-weight: bold;' class='bold'>Barclays
                <br /></td>
            <td id='' style='width: 18%; font-weight: bold;' class='bold'>Cofidis
                <br /></td>
            <td id='' style='width: 18%; font-weight: bold;' class='bold'>Pay by Invoice
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Amazon Pay region
                <br /></td>
            <td id='' style=''>US only
                <br /></td>
            <td id='' style=''>DE only
                <br /></td>
            <td id='' style=''>FR/ES only
                <br /></td>
            <td id='' style=''>DE only
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Requires payment method activation
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>No
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Supports one-time checkout
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Supports recurring checkout
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>No
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Supports one-time checkout additional button integration
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Supports multi-ship (multiple authorizations and captures per order)
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Supports digital orders (productType = payOnly)
                <br /></td>
            <td id='' style=''>No
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>Yes
                <br /></td>
            <td id='' style=''>No
                <br /></td>
        </tr>
        <tr id=''>
            <td id='' style='font-weight: bold; text-align: left;vertical-align: top;' class='bold'>Order minimum
                <br /></td>
            <td id='' style='text-align: left;vertical-align: top;'>$50 USD
                <br /></td>
            <td id='' style='text-align: left;vertical-align: top;'>€100
                <br /></td>
            <td id='' style='text-align: left;vertical-align: top;'>€60 (4xCB, Paga en 4), €45 (Option Credit, Credit Line)
                <br /></td>
            <td id='' style='text-align: left;vertical-align: top;'>€1
                <br /></td>
        </tr>
    </tbody>
</table>

### 2. Setting the estimated order amount on button render

Use the `estimatedOrderAmount` button parameter to set the estimated order amount for the transaction. You must create a local reference of the button to update the `estimatedOrderAmount` in the next step. The amount value should not contain commas or spaces. You should use decimals to indicate a fractional amount if applicable (for example, “3.99” USD to represent 3 dollars and 99 cents). Amazon Pay will still render the button while throwing a non-blocking console error if the amount value provided is invalid.

<div style="display:none" class="environmentSpecificKeys">
<ul id="profileTabs" class="nav nav-tabs">
  <li class="nav-item"><a class="active nav-link noExtIcon" href="#usButtonTab" data-toggle="tab">US</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#euButtonTab" data-toggle="tab">EU</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#ukButtonTab" data-toggle="tab">UK</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#jpButtonTab" data-toggle="tab">JP</a></li>
</ul>
<div class="tab-content">


  <div role="tabpanel" class="tab-pane active" id="usButtonTab">   
<div markdown="block">
```html
<body>
    <div id="AmazonPayButton"></div>
    <script src="https://static-na.payments-amazon.com/checkout.js"></script>
    <script type="text/javascript" charset="utf-8">
        const amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
            // set checkout environment
            merchantId: 'merchant_id',
            publicKeyId: 'SANDBOX-xxxxxxxxxx',
            ledgerCurrency: 'USD',              
            // customize the buyer experience
            checkoutLanguage: 'en_US',
            productType: 'PayAndShip',
            placement: 'Cart',
            buttonColor: 'Gold',
            estimatedOrderAmount: { "amount": "109.99", "currencyCode": "USD"},
            // configure Create Checkout Session request
            createCheckoutSessionConfig: {                     
                payloadJSON: 'payload', // payload generated in step 2
                signature: 'xxxx', // signature generatd in step 3
                algorithm : 'AMZN-PAY-RSASSA-PSS-V2'
            }   
        });
    </script>
</body>
```
</div>
  </div>

  <div role="tabpanel" class="tab-pane" id="euButtonTab">
<div markdown="block">
```html
<body>
    <div id="AmazonPayButton"></div>
    <script src="https://static-eu.payments-amazon.com/checkout.js"></script>
    <script type="text/javascript" charset="utf-8">
        const amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
            // set checkout environment
            merchantId: 'merchant_id',
            publicKeyId: 'SANDBOX-xxxxxxxxxx',
            ledgerCurrency: 'EUR',             
            // customize the buyer experience
            checkoutLanguage: 'en_GB',
            productType: 'PayAndShip',
            placement: 'Cart',
            buttonColor: 'Gold',
            estimatedOrderAmount: { "amount": "109.99", "currencyCode": "EUR"},
            // configure Create Checkout Session request
            createCheckoutSessionConfig: {                     
                payloadJSON: 'payload', // payload generated in step 2
                signature: 'xxxx', // signature generatd in step 3
                algorithm : 'AMZN-PAY-RSASSA-PSS-V2'
            }   
        });
    </script>
</body>
```
</div>
  </div>

<div role="tabpanel" class="tab-pane" id="ukButtonTab">
<div markdown="block">
```html
<body>
    <div id="AmazonPayButton"></div>
    <script src="https://static-eu.payments-amazon.com/checkout.js"></script>
    <script type="text/javascript" charset="utf-8">
        const amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
            // set checkout environment
            merchantId: 'merchant_id',
            publicKeyId: 'SANDBOX-xxxxxxxxxx',
            ledgerCurrency: 'GBP',            
            // customize the buyer experience
            checkoutLanguage: 'en_GB',
            productType: 'PayAndShip',
            placement: 'Cart',
            buttonColor: 'Gold',
            estimatedOrderAmount: { "amount": "109.99", "currencyCode": "GBP"},
            // configure Create Checkout Session request
            createCheckoutSessionConfig: {                     
                payloadJSON: 'payload', // payload generated in step 2
                signature: 'xxxx', // signature generatd in step 3
                algorithm : 'AMZN-PAY-RSASSA-PSS-V2'
            }   
        });
    </script>
</body>
```
</div>
  </div>  

  <div role="tabpanel" class="tab-pane" id="jpButtonTab">
<div markdown="block">
```html
<body>
    <div id="AmazonPayButton"></div>
    <script src="https://static-fe.payments-amazon.com/checkout.js"></script>
    <script type="text/javascript" charset="utf-8">
        amazon.Pay.renderButton('#AmazonPayButton', {
            // set checkout environment
            merchantId: 'merchant_id',
            publicKeyId: 'SANDBOX-xxxxxxxxxx',
            ledgerCurrency: 'JPY',         
            // customize the buyer experience
            checkoutLanguage: 'ja_JP',
            productType: 'PayAndShip',
            placement: 'Cart',
            buttonColor: 'Gold',
            estimatedOrderAmount: { "amount": "109.99", "currencyCode": "JPY"},
            // configure Create Checkout Session request
            createCheckoutSessionConfig: {                     
                payloadJSON: 'payload', // payload generated in step 2
                signature: 'xxxx', // signature generatd in step 3
                algorithm : 'AMZN-PAY-RSASSA-PSS-V2'
            }   
        });
    </script>
</body>
```
</div>
  </div>
</div>
</div>


* * *

### 3. Updating the estimated order amount 

Use updateButtonInfo() to update the `estimatedOrderAmount` if the estimated order amount changes; for example, if the buyer removes or adds something to their cart. This function may update the button UI and the new `estimatedOrderAmount` will be used to determine whether the order meets the installment provider’s minimum order price threshold.

```html
<script type="text/javascript" charset="utf-8">
  amazonPayButton.updateButtonInfo({"amount":"120.99","currencyCode":"USD"});
</script>
```

* * *

### 4. Setting the estimated order amount on button click (alternative option)

If you <a href="../amazon-pay-checkout/amazon-pay-script.md#decoupling-button-render-and-checkout-or-sign-in-initiation" target="_blank" rel="noopener noreferrer">decoupled button render and checkout initialization</a>, you can set `estimatedOrderAmount` at time of button click instead of setting it on button render using the following code:

<div style="display:none" class="environmentSpecificKeys">
<ul id="profileTabs" class="nav nav-tabs">
  <li class="nav-item"><a class="active nav-link noExtIcon" href="#usButtonDecoupledTab" data-toggle="tab">US</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#euButtonDecoupledTab" data-toggle="tab">EU</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#ukButtonDecoupledTab" data-toggle="tab">UK</a></li>
  <li class="nav-item"><a class="nav-link noExtIcon" href="#jpButtonDecoupledTab" data-toggle="tab">JP</a></li>
</ul>
<div class="tab-content">


  <div role="tabpanel" class="tab-pane active" id="usButtonDecoupledTab">   
<div markdown="block">
```javascript
var amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
   merchantId: 'xxxxx',
   publicKeyId: 'SANDBOX-xxxxxxxxxx', 
   ledgerCurrency: 'USD',          
   checkoutLanguage: 'en_US', 
   productType: 'PayAndShip', 
   placement: 'Cart',
   buttonColor: 'Gold'
});

amazonPayButton.onClick(function(){
  // define your custom actions here
  
  amazonPayButton.initCheckout({
    estimatedOrderAmount: { "amount": "109.99", "currencyCode": "USD"},
    createCheckoutSessionConfig: {  
      payloadJSON: 'payload',
      signature: 'xxxx',
      algorithm: 'AMZN-PAY-RSASSA-PSS-V2',
      publicKeyId: 'xxxxxxxxxx'
    }
  });
});
```
</div>
  </div>

  <div role="tabpanel" class="tab-pane" id="euButtonDecoupledTab">
<div markdown="block">
```javascript
var amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
   merchantId: 'xxxxx',
   publicKeyId: 'SANDBOX-xxxxxxxxxx', 
   ledgerCurrency: 'EUR',          
   checkoutLanguage: 'en_GB', 
   productType: 'PayAndShip', 
   placement: 'Cart',
   buttonColor: 'Gold'
});

amazonPayButton.onClick(function(){
  // define your custom actions here
  
  amazonPayButton.initCheckout({
    estimatedOrderAmount: { "amount": "109.99", "currencyCode": "EUR"},
    createCheckoutSessionConfig: { 
      payloadJSON: 'payload',
      signature: 'xxxx',
      algorithm: 'AMZN-PAY-RSASSA-PSS-V2',
      publicKeyId: 'xxxxxxxxxx'
    }
  });
});
```
</div>
  </div>

<div role="tabpanel" class="tab-pane" id="ukButtonDecoupledTab">
<div markdown="block">
```javascript
var amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
   merchantId: 'xxxxx',
   publicKeyId: 'SANDBOX-xxxxxxxxxx', 
   ledgerCurrency: 'GBP',          
   checkoutLanguage: 'en_GB', 
   productType: 'PayAndShip', 
   placement: 'Cart',
   buttonColor: 'Gold'
});

amazonPayButton.onClick(function(){
  // define your custom actions here
  
  amazonPayButton.initCheckout({
    estimatedOrderAmount: { "amount": "109.99", "currencyCode": "GBP"},
    createCheckoutSessionConfig: { 
      payloadJSON: 'payload',
      signature: 'xxxx',
      algorithm: 'AMZN-PAY-RSASSA-PSS-V2',
      publicKeyId: 'xxxxxxxxxx'
    }
  });
});
```
</div>
  </div>  

  <div role="tabpanel" class="tab-pane" id="jpButtonDecoupledTab">
<div markdown="block">
```javascript
var amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
   merchantId: 'xxxxx',
   publicKeyId: 'SANDBOX-xxxxxxxxxx', 
   ledgerCurrency: 'JPY',          
   checkoutLanguage: 'ja_JP', 
   productType: 'PayAndShip', 
   placement: 'Cart',
   buttonColor: 'Gold'
});

amazonPayButton.onClick(function(){
  // define your custom actions here
  
  amazonPayButton.initCheckout({
  	estimatedOrderAmount: { "amount": "109.99", "currencyCode": "JPY"},
    createCheckoutSessionConfig: { 
      payloadJSON: 'payload',
      signature: 'xxxx',
      algorithm: 'AMZN-PAY-RSASSA-PSS-V2',
      publicKeyId: 'xxxxxxxxxx'
    }
  });
});
```
</div>
  </div>
</div>
</div>

* * *

### 5. UX best practices

Display the <a href="../amazon-pay-api-v2/checkout-session.md#type-paymentpreferences" target="_blank" rel="noopener noreferrer">paymentDescriptor</a> value returned in the <a href="../amazon-pay-api-v2/checkout-session.md#get-checkout-session" target="_blank" rel="noopener noreferrer">Get Checkout Session</a> response if you’ve implemented the standard 2-step checkout flow to inform the buyer that they will be redirected to the installment provider to complete their transaction.

For Affirm-enabled merchants - Use the `checkoutButtonText` value returned in the <a href="../amazon-pay-api-v2/checkout-session.md#get-checkout-session" target="_blank" rel="noopener noreferrer">Get Checkout Session</a> response as the text on the "Place order" button to inform the buyer that they will be redirected to the Affirm page to complete their transaction. With this change, the button will say- "Continue to Affirm"  instead of "Place order"










