Managing Merchants

Overview

The Merchant API enables partners to manage merchant accounts within Affirm's system. This guide covers the processes of creating merchants, initiating underwriting procedures, managing approval states, and updating merchant attributes.

Create merchants

The CreateMerchantt endpoint is used to create a merchant in the Affirm system. You can use the APIs to create and manage merchants, including setting up merchants with a specific financing program.

See the request below for creating a new merchant:

curl --request POST \
     --url https://www.affirm.com/api/partner/v1/merchants \
     --header 'Country-Code: USA' \
     --header 'Locale: en_US' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "business_address": {
    "street1": "650 California Street",
    "city": "San Francisco",
    "region1_code": "CA",
    "postal_code": "94108",
    "country_code": "US"
  },
  "legal_business_name": "Suzie  Store LLC",
  "url": "suizestore.com",
  "first_name": "Suzie",
  "last_name": "Smith",
  "email_address": "[email protected]",
  "financing_package_uuid": "192c664c-d583-49ed-8dfd-11b4ba7b9af7",
  "ein": "123456789",
  "settlement_bank_account_number": "1234567890",
  "settlement_bank_routing_number": "123456789",
  "mcc": "2791",
  "business_type": "LLC",
  "remittance_name": "Suzie Smith",
  "pre_approved": true,
  "external_merchant_id": "EXTERNAL-MERCHANT-ID",
  "phone_number": "+1-123-123-1234",
  "business_phone": "+1-123-123-1234",
  "annual_volume": "1000000",
  "average_order_value": "1000",
  "capture_to_shipment_time": 5,
  "business_owner_dob": "1992-05-11T00:00:00.000Z",
  "business_owner_ssn": "123456789"
}
'

On success, Affirm returns a 201 response including the associated merchantId and their API keys.

{
  "id": "21FA1V8NLZAQGOK6",
  "live_public_key": "live_pub_ky9F8x2Gp",
  "live_private_key": "live_priv_ky7N4d6Sj",
  "sandbox_public_key": "sand_pub_ty4M3z7Qk",
  "sandbox_private_key": "sand_priv_ty2D5v8Pn",
  "status": "net_new",
  "api_key_pairs": [
    {
      "public_key": "live_pub_ky9F8x2Gp",
      "private_key": "live_priv_ky7N4d6Sj",
      "env": "live",
      "active": true,
      "date_created": "2022-11-01T12:00:00Z",
      "date_updated": "2022-11-15T08:00:00Z"
    }
  ],
  "parent_id": "parent_67890"
}

Update merchants

Use the UpdateMerchant API to update details about the merchant. The following request updates the merchants business name to Suzie Store Inc. and other details.

curl --request PUT \
     --url https://www.affirm.com/api/partner/v1/merchants/21FA1V8NLZAQGOK65 \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "legal_business_name": "Suzie  Store Inc.",
  "settlement_bank_account_number": "11111567890",
  "business_type": "Partnership"
}
'

On success, Affirm returns a 200 response and includes the date the merchant was updates.

{
  "api_key_pairs": [
    {
      "public_key": "ABCDEFGH1234",
      "private_key": "ABCDEFGH1234",
      "env": "live",
      "active": true,
      "date_created": "2021-02-20T00:00:00Z",
      "date_updated": "2021-02-20T00:00:00Z"
    }
  ]
}

Retrieve merchants

Use the GetMerchant endpoint to retrieve the details of a specific merchant.

The following example retrieves a merchant by ID.

curl --request GET \
     --url https://www.affirm.com/api/partner/v1/merchants/21FA1V8NLZAQGOK6 \
     --header 'accept: application/json'

See the example response belowL

{
  "api_key_pairs": [
    {
      "public_key": "ABCDEFGH1234",
      "private_key": "ABCDEFGH1234",
      "env": "live",
      "active": true,
      "date_created": "2021-02-20T00:00:00Z",
      "date_updated": "2021-02-20T00:00:00Z"
    }
  ]
}

Delete merchants

Use the DeleteMerchant endpoint to delete a merchant by merchantId.

curl --request POST \
     --url https://www.affirm.com/api/partner/v1/merchants/21FA1V8NLZAQGOK6/delete_event \
     --header 'Idempotency-Key: 0ddb9813-e62d-4370-93c5-476cb93038a9' \
     --header 'accept: application/json'

See the example response below:

{
  "resource_id": "21FA1V8NLZAQGOK6",
  "delete_id": "123a4567-abcd-12ab-a345-123456789012"
}

Create new merchant API key pair

Use the CreateMerchantApiKeys to create a new API key pair for the merchant's current environment.

curl --request POST \
     --url https://www.affirm.com/api/partner/v1/merchants/21FA1V8NLZAQGOK6/api_keys \
     --header 'accept: application/json'

See the example response below:

{
  "api_key_pair": {
    "public_key": "ABCDEFGH1234",
    "private_key": "ABCDEFGH1234",
    "env": "live",
    "active": true,
    "date_created": "2021-02-20T00:00:00Z",
    "date_updated": "2021-02-20T00:00:00Z"
  },
  "status": "api_key_created"
}

Update new merchant API key pair

Use the UpdateMerchantAPIKeys endpoint to update the state of existing merchant API keys.

curl --request PUT \
     --url https://www.affirm.com/api/partner/v1/merchants/21FA1V8NLZAQGOK6/api_keys \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "active": true,
  "public_key": "ABCDEFGH1234"
}
'

See the example response below:

{
  "status": "api_key_created"
}

Test merchant API Keys

Use the TestMerchantApiKeys endpoint to test if the merchant's API keys are valid.

curl --request GET \
     --url https://www.affirm.com/api/partner/v1/merchants/21FA1V8NLZAQGOK6/test \
     --header 'accept: application/json'

See the example response below:

{
  "code": "api-key-pair-valid",
  "message": "The API keys are valid."
}