> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chift.eu/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon Seller API

export const CoverageIframe = ({api = 'accounting', connectors}) => {
  const [theme, setTheme] = React.useState('light');
  const [isFullscreen, setIsFullscreen] = React.useState(false);
  const [currentIframeUrl, setCurrentIframeUrl] = React.useState(null);
  const iframeRef = React.useRef(null);
  React.useEffect(() => {
    const checkTheme = () => {
      const isDark = document.documentElement.classList.contains('dark');
      setTheme(isDark ? 'dark' : 'light');
    };
    checkTheme();
    const observer = new MutationObserver(checkTheme);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['class']
    });
    return () => observer.disconnect();
  }, []);
  React.useEffect(() => {
    const handleFullscreenChange = () => {
      setIsFullscreen(!!document.fullscreenElement);
    };
    document.addEventListener('fullscreenchange', handleFullscreenChange);
    return () => document.removeEventListener('fullscreenchange', handleFullscreenChange);
  }, []);
  React.useEffect(() => {
    const handleMessage = event => {
      if (!event.origin.includes('chift-coverage-matrix.s3.eu-west-3.amazonaws.com')) return;
      if (event.data?.type === 'urlChange' && event.data?.url) {
        setCurrentIframeUrl(event.data.url);
      }
    };
    window.addEventListener('message', handleMessage);
    return () => window.removeEventListener('message', handleMessage);
  }, []);
  const queryParams = new URLSearchParams({
    api,
    theme,
    ...connectors ? {
      connectors
    } : {}
  });
  const iframeUrl = `https://chift-coverage-matrix.s3.eu-west-3.amazonaws.com/coverage.html?${queryParams.toString()}`;
  const openUrl = currentIframeUrl || iframeUrl;
  const toggleFullscreen = () => {
    if (!document.fullscreenElement) {
      iframeRef.current?.requestFullscreen();
    } else {
      document.exitFullscreen();
    }
  };
  const isDark = theme === 'dark';
  const buttonStyle = {
    display: 'inline-flex',
    alignItems: 'center',
    gap: '8px',
    padding: '4px 12px',
    fontSize: '14px',
    fontWeight: '500',
    color: isDark ? '#d4d4d4' : '#374151',
    backgroundColor: 'transparent',
    border: `1px solid ${isDark ? '#404040' : '#e5e7eb'}`,
    borderRadius: '12px',
    cursor: 'pointer',
    textDecoration: 'none',
    transition: 'all 0.15s ease'
  };
  const hoverBg = isDark ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.03)';
  const hoverBorder = isDark ? '#525252' : '#d1d5db';
  const defaultBg = 'transparent';
  const defaultBorder = isDark ? '#404040' : '#e5e7eb';
  return <>
  <div style={{
    display: 'flex',
    justifyContent: 'flex-end',
    gap: '12px',
    marginBottom: '8px'
  }}>
    <button onClick={toggleFullscreen} style={buttonStyle} onMouseEnter={e => {
    e.target.style.backgroundColor = hoverBg;
    e.target.style.borderColor = hoverBorder;
  }} onMouseLeave={e => {
    e.target.style.backgroundColor = defaultBg;
    e.target.style.borderColor = defaultBorder;
  }}>
      <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
        {isFullscreen ? <>
            <polyline points="4 14 10 14 10 20"></polyline>
            <polyline points="20 10 14 10 14 4"></polyline>
            <line x1="14" y1="10" x2="21" y2="3"></line>
            <line x1="3" y1="21" x2="10" y2="14"></line>
          </> : <>
            <polyline points="15 3 21 3 21 9"></polyline>
            <polyline points="9 21 3 21 3 15"></polyline>
            <line x1="21" y1="3" x2="14" y2="10"></line>
            <line x1="3" y1="21" x2="10" y2="14"></line>
          </>}
      </svg>
      {isFullscreen ? 'Exit Fullscreen' : 'Fullscreen'}
    </button>
    <a href={iframeUrl} target="_blank" rel="noopener noreferrer" style={buttonStyle} onMouseEnter={e => {
    e.target.style.backgroundColor = hoverBg;
    e.target.style.borderColor = hoverBorder;
  }} onMouseLeave={e => {
    e.target.style.backgroundColor = defaultBg;
    e.target.style.borderColor = defaultBorder;
  }}>
      <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
        <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>
        <polyline points="15 3 21 3 21 9"></polyline>
        <line x1="10" y1="14" x2="21" y2="3"></line>
      </svg>
      Open in new tab
    </a>
  </div>
  <iframe ref={iframeRef} src={iframeUrl} title={`Chift Coverage Matrix - ${api}`} style={{
    height: 'max(500px, 80vh)'
  }} className="w-full" allowFullScreen />
  <blockquote>
    <p>
      <strong>Matrix Legend 🧭</strong>
    </p>
    <table>
      <thead>
        <tr>
          <th>Status</th>
          <th>Meaning</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>✅ Implemented</td>
          <td>Endpoint is implemented and available.</td>
        </tr>
        <tr>
          <td>❌ Not supported</td>
          <td>
            Endpoint is not supported by the target software (connector
            limitation). Cannot be implemented.
          </td>
        </tr>
        <tr>
          <td>💬 On request</td>
          <td>
            Endpoint is not implemented but feasibility is validated. Can be
            implemented on request — contact your Chift point of contact to
            discuss scope and timing.
          </td>
        </tr>
        <tr>
          <td>🔎 To be analyzed</td>
          <td>
            Endpoint is not implemented and feasibility has not yet been fully
            assessed. Analysis is pending.
          </td>
        </tr>
      </tbody>
    </table>
  </blockquote>
</>;
};

<Card title="General Information" icon={<img src="https://mintcdn.com/chift/7C2gSAotGV1KJ3Tb/assets/icons/amazon.png?fit=max&auto=format&n=7C2gSAotGV1KJ3Tb&q=85&s=fdaffc3c18407705e9b71bcee7bfd568" alt="Amazon" />}>
  Website: [sell.amazon.com](https://sell.amazon.com)\
  Software type: Solution as a Software (SaaS)\
  Geography: 🌍 Worldwide
</Card>

## Introduction

Amazon Seller Central is the web interface used by brands and merchants to market and sell their products directly to Amazon's customers. The Amazon Selling Partner API (SP-API) is a REST-based API that helps Amazon selling partners programmatically access their data on orders, shipments, payments, inventory, and much more. Deliver the Amazon integration your customers want in no time.

## Configure Amazon

**Prerequisite(s)**

* A publicly accessible website describing your application and services
* The API roles your integration requires (we recommend selecting all roles)

**Activation Process**

### Step 1 — Create a Solution Provider Portal account

1. Go to [developer.amazonservices.com](https://developer.amazonservices.com) and click **Create developer account**
2. Sign in with your Amazon account or create a new one
3. Complete the **identity verification** process (takes approximately 20 minutes)\
   You can find as well the full documentation [here](https://developer-docs.amazon.com/sp-api/docs/register-as-a-public-developer)

### Step 2 — Complete your developer profile

Once your account is created, you must complete your developer profile before creating an app:

1. In the **Solution Provider Portal**, go to **Settings** → **Developer Profile** (or select **Proceed to Developer Profile** if prompted)
2. Fill in all required sections:
   * **Contact information**: organization name, website URL, country, primary contact details
   * **Data Access**: select **Public Developer** — *"I build and offer publicly available applications that are used by other sellers"*
   * **Roles**: select all roles your integration requires (you don't need to select roles that require extra questions, like the Tax Invoicing/Remittance role)
   * **Use cases**: describe how you intend to use the SP-API
   * **Security controls**: answer all security practice questions (answers must reflect compliance with Amazon's Acceptable Use Policy, Data Protection Policy, and Solution Provider Agreement - Please ask Chift for help if needed)
3. Check the acknowledgment box, review the policies, and click **Register**
4. Wait for Amazon's approval — they will contact you via email. You must respond to any requests within five days

### Step 3 — Create an app client

Once your developer profile is approved:

1. In the **Solution Provider Portal**, select **Develop Apps** from the top navigation to access **Developer Central**
2. Click **Add new app client**
3. Fill in the app client form:
   * **App name**: enter a meaningful name (e.g., your company name)
   * **API type**: select **SP API**
   * **Business entity**: select **Sellers** (or Vendors, or both, depending on your use case)
   * **Roles**: select all roles that your integration requires. We recommend selecting all available roles to ensure uninterrupted access to the API
4. In the **OAuth credentials** section:
   * **OAuth Login URI**: enter `https://chift.app/oauth2/redirect`
   * **Redirect URI**: enter `https://chift.app/oauth2/redirect`
5. Click **Save and exit**
   The app will remain in "draft" but can be used as such.

### Step 4 — Retrieve your credentials

1. In **Developer Central**, find your newly created app and click **Edit app**
2. Under **LWA credentials**, click **View** to reveal:
   * **Client ID** — your application's unique identifier
   * **Client Secret** — your application's secret key. Note that you will need to rotate your Client Secret as the client secret is expiring after 180 days

Keep these credentials safe. You will need them to configure the connector in Chift.

### Step 5 — Configure the connector in Chift

Enter the **Client ID** and **Client Secret** in the Amazon connector settings on your Chift account to enable the connector.

## Test Amazon

To test the integration, you can use the SP-API sandbox environment. Amazon provides sandbox endpoints that simulate API responses without affecting live data. Refer to the [SP-API sandbox documentation](https://developer-docs.amazon.com/sp-api/docs/the-selling-partner-api-sandbox) for details on how to configure sandbox calls.

## Connect Amazon

To activate a connection with Amazon Seller API, users will have to go through the following steps.

* French article: [Help Center - Amazon Seller API FR](https://help.chift.app/articles/1936754401-amazon-seller?lang=fr)
* English article: [Help Center - Amazon Seller API EN](https://help.chift.app/articles/1936754401-amazon-seller?lang=en)

## Limitations & Exceptions

* A professional selling plan is required to use the SP-API
* Public applications are subject to Amazon's authorization limits and may require an Appstore listing
* Rate limits apply per API operation — refer to the [SP-API usage plans documentation](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api) for details
* Amazon will ask [fees](https://developer.amazonservices.com/spp-announcement) in the future for the usage of the API

## Amazon coverage

<CoverageIframe api="ecommerce" connectors="Amazon" />
