Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

Affirm Component

Add Affirm to an existing Components integration.

On this page, you can find additional configuration for adding Affirm to your Components integration.

Before you begin

This page assumes you've already:

API reference

Select which endpoint you're integrating:

This is the default with Components v5.0.0 or later.
Parameter name Required Description
shopperName -white_check_mark- Shopper's first name and last name.
telephoneNumber -white_check_mark- The shopper's phone number.
shopperEmail -white_check_mark- The shopper's email address.
shopperReference -white_check_mark- A unique reference to identify the shopper (minimum length three characters).
billingAddress The address where to send the invoice.
deliveryAddress The address where the purchased goods should be delivered. If blank or missing, billingAddress is used by default.
lineItems Price and product information about the purchased items. This is optional, but we recommend to include this data to improve approval rates.
curl https://checkout-test.adyen.com/v68/sessions \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
   "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
   "countryCode":"US",
   "amount":{
      "currency":"USD",
      "value":1000
   },
   "shopperReference":"YOUR_UNIQUE_SHOPPER_ID",
   "reference":"YOUR_ORDER_NUMBER",
   "shopperName":{
      "firstName":"Simon",
      "lastName":"Hopper"
   },
   "telephoneNumber":"+1612345678",
   "shopperEmail":"s.hopper@example.com",
   "{hint:state.data.billingAddress from onSubmit}billingAddress{/hint}":{
      "city":"San Francisco",
      "country":"US",
      "houseNumberOrName":"274",
      "postalCode":"94107",
      "stateOrProvince":"CA",
      "street":"Brannan St."
   },
   "{hint:state.data.deliveryAddress from onSubmit}deliveryAddress{/hint}":{
      "city":"San Francisco",
      "country":"US",
      "houseNumberOrName":"274",
      "postalCode":"94107",
      "stateOrProvince":"CA",
      "street":"Brannan St."
   },
   "returnUrl":"https://your-company.com/checkout?shopperOrder=12xy..",
   "lineItems":[
      {
         "quantity":"1",
         "amountExcludingTax":"331",
         "description":"Shoes",
         "id":"Item #1",
         "taxAmount":"69",
         "productUrl":"https://your-company.com/item1/",
         "imageUrl":"https://your-company.com/item1.jpg"
      },
      {
         "quantity":"2",
         "amountExcludingTax":"248",
         "description":"Socks",
         "id":"Item #2",
         "taxAmount":"52",
         "productUrl":"https://your-company.com/item2/",
         "imageUrl":"https://your-company.com/item2.jpg"
      }
   ]
}'

Component configuration

Step 1: Create a DOM element

Create a DOM element on your checkout page, placing it where you want the payment method form to be rendered:

 <div id="affirm-container"></div>

Step 2: Create an instance of the Component

Use the create method of your AdyenCheckout instance, in this case checkout, to create the Component:

const affirmComponent = checkout.create('affirm').mount('#affirm-container');

Optional configuration

You can add the optional visibility configuration object to have more control over which fields are displayed to the shopper:

Parameter name Description
personalDetails Shopper name, phone number, and email address.
billingAddress The address where to send the invoice.
deliveryAddress The address where the purchased goods should be delivered.

If you want to add optional configuration, include this in a configuration object.

const affirmConfiguration = {
  visibility: {
      personalDetails: "hidden", // These fields will not appear on the payment form.
      billingAddress: "readOnly", // These fields will appear on the payment form,
                                //but the shopper can't edit them.
      deliveryAddress: "editable" // These fields will appear on the payment form,
                                // and the shopper can edit them.
                                // This is the default behavior.
  }
};

Use the create method of your AdyenCheckout instance, in this case checkout, to create an instance of the Component. Add the configuration object if you created one.

const affirmComponent = checkout.create('affirm', affirmConfiguration).mount('#affirm-container');

Capture the payment

After the goods have been sent, you also need to capture the payment. All Affirm payments have to be manually captured, even if you have enabled automatic capture for other payment methods. Capturing the payment is what triggers the installment payment schedule for the shopper.
If for any reason you need to capture a lesser amount than what was authorised, you need to issue a refund for the difference after the capture, that . For example, a customer purchases two items of $500 each, totaling $1.000, but only one is fulfilled. After capturing $1.000, you should issue a subsequent refund for the unfulfilled item of $500.

Test and go live

To receive your test credentials, contact Affirm. After reviewing your test transactions, Affirm will provide you with the credentials for processing live transactions.

You can check the status of the test payments in your test Customer Area > Transactions > Payments.

Before you can accept live Affirm payments, you need to submit a request for Affirm in your live Customer Area, and provide us with your Affirm live credentials.