# PayPal Zettle

```json
{
  "name": "PayPal Zettle",
  "slug": "zettle",
  "url": "https://composio.dev/toolkits/zettle",
  "markdown_url": "https://composio.dev/toolkits/zettle.md",
  "logo_url": "https://logos.composio.dev/api/zettle",
  "categories": [
    "e-commerce"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-28T05:34:44.332Z"
}
```

![PayPal Zettle logo](https://logos.composio.dev/api/zettle)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with PayPal Zettle MCP or direct API to manage products, check inventory, review purchases, and access finance data through natural language.

## Summary

PayPal Zettle is a point-of-sale platform with APIs for products, inventory, purchases, and finance.
It helps merchants manage store operations and sales data in one place.

## Categories

- e-commerce

## Toolkit Details

- Tools: 55

## Images

- Logo: https://logos.composio.dev/api/zettle

## Authentication

- **Oauth2**
  - Type: `oauth2`
  - Description: Oauth2 authentication for PayPal Zettle.
  - Setup:
    - Configure Oauth2 credentials for PayPal Zettle.
    - Use the credentials when creating an auth config in Composio.
- **S2s Oauth2**
  - Type: `custom`
  - Description: S2s Oauth2 authentication for PayPal Zettle.
  - Setup:
    - Configure S2s Oauth2 credentials for PayPal Zettle.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- List products in my PayPal Zettle library
- Check low-stock PayPal Zettle inventory items
- Review recent PayPal Zettle purchases

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `ZETTLE_COUNT_PRODUCTS` | Count Products | Retrieve the count of existing products for a merchant organization. |
| `ZETTLE_COUNT_PRODUCTS_BY_TAX_RATE` | Count Products By Tax Rate | Get each tax rate and its associated product count. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_CREATE_CATEGORIES` | Create Categories | Create one or more product categories in one request and return creation metadata. |
| `ZETTLE_CREATE_DISCOUNT` | Create Discount | Create a fixed-amount or percentage discount in a product library. |
| `ZETTLE_CREATE_INVENTORY` | Create Inventory | Create one Zettle STORE inventory from its name and optional description. |
| `ZETTLE_CREATE_PRODUCT` | Create Product | Create a product and up to 99 complete embedded variants. |
| `ZETTLE_CREATE_TAX_RATES` | Create Tax Rates | Create up to 15 tax rates in one request. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_CREATE_WEBHOOK_SUBSCRIPTION` | Create Webhook Subscription | Create a Zettle webhook subscription for selected events at a public HTTPS destination and return the signing key needed to verify incoming messages. |
| `ZETTLE_DELETE_CATEGORY` | Delete Category | Permanently delete a category. This cannot be undone; verify the identifier before calling. |
| `ZETTLE_DELETE_DISCOUNT` | Delete Discount | Permanently delete one discount. This cannot be undone; verify the identifier before calling. |
| `ZETTLE_DELETE_PRODUCTS` | Delete Products | Permanently delete one or more products and their embedded variants. This cannot be undone; verify every product UUID before calling. |
| `ZETTLE_DELETE_TAX_RATE` | Delete Tax Rate | Permanently delete one tax rate. This cannot be undone; verify the identifier before calling. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_DELETE_WEBHOOK_SUBSCRIPTION` | Delete Webhook Subscription | Permanently delete a Zettle webhook subscription. This cannot be undone; verify the identifier before calling. |
| `ZETTLE_FETCH_PRODUCT_IMAGE` | Fetch Product Image | Fetch a product image by lookup key, optionally resizing, cropping, or converting it, and return a downloadable file. |
| `ZETTLE_GENERATE_PRODUCT_SLUG` | Generate Product Slug | Create a unique online product slug from a product name. |
| `ZETTLE_GET_DISCOUNT` | Get Discount | Retrieve one discount from a merchant's product library. |
| `ZETTLE_GET_FINANCE_BALANCE` | Get Finance Balance | Get the balance of the merchant's preliminary or liquid Zettle account, optionally at a specified point in time. |
| `ZETTLE_GET_IMPORT_STATUS` | Get Import Status | Return the latest product-library import status, or a specific import when import_uuid is provided. |
| `ZETTLE_GET_INVENTORY` | Get Inventory | Fetch one inventory belonging to the connected Zettle organization. |
| `ZETTLE_GET_PAYOUT_INFO` | Get Payout Info | Get the connected merchant's liquid-account payout balance, next payout amount, voucher discount balance, and payout schedule at a point in time. |
| `ZETTLE_GET_PRODUCT` | Get Product | Retrieve one product and its complete embedded variants. |
| `ZETTLE_GET_PRODUCT_LIBRARY` | Get Product Library | Return one page of the complete product library or changes after an event-log UUID, including full products, embedded variants, and discounts. |
| `ZETTLE_GET_PRODUCT_STOCK` | Get Product Stock | Return one page of variant stock balances from the documented product- and inventory-specific Zettle endpoint, including low-stock settings and a continuation cursor. |
| `ZETTLE_GET_PURCHASE` | Get Purchase | Fetch one immutable Zettle purchase or refund by its UUID version 1, including complete item, payment, discount, tax, and refund details. |
| `ZETTLE_GET_SELECTED_PRODUCTS_STOCK` | Get Selected Products Stock | Return one page of product-variant stock balances for selected products in one Zettle inventory. |
| `ZETTLE_GET_TAX_RATE` | Get Tax Rate | Get one tax rate. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_GET_TAX_SETTINGS` | Get Tax Settings | Get organization tax settings and the organization UUID needed by other Zettle actions. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_GET_TRACKING_STATUS` | Get Tracking Status | Return inventory-tracking status for selected Zettle products. |
| `ZETTLE_IMPORT_LIBRARY_ITEMS` | Import Library Items | Start an asynchronous product import. At least one product is required. Zettle currently ignores discounts and categories included in the payload; create those resources with their dedicated actions. Only one import can run at a time. |
| `ZETTLE_IMPORT_PRODUCT_IMAGES` | Import Product Images | Import one or more product images from HTTPS URLs and return their lookup keys. Imported assets have no documented delete endpoint. |
| `ZETTLE_LIST_CATEGORIES` | List Categories | Retrieve all product categories for a merchant organization. |
| `ZETTLE_LIST_DISCOUNTS` | List Discounts | Retrieve all discounts from a merchant's product library. |
| `ZETTLE_LIST_FINANCE_TRANSACTIONS` | List Finance Transactions | Return one page of transactions from a Zettle preliminary or liquid account within a required date range, optionally filtered by transaction type. |
| `ZETTLE_LIST_INVENTORIES` | List Inventories | List the merchant organization's inventories and the UUIDs needed for stock-management actions. |
| `ZETTLE_LIST_INVENTORY_STOCK` | List Inventory Stock | Return one page of product-variant stock balances from the documented inventory-specific Zettle endpoint, including low-stock settings and a continuation cursor. |
| `ZETTLE_LIST_LIBRARY_IMAGES` | List Library Images | Retrieve all image references used by library items. |
| `ZETTLE_LIST_PRODUCT_OPTIONS` | List Product Options | Retrieve aggregate active variant options in the product library. |
| `ZETTLE_LIST_PRODUCTS` | List Products | List all POS-visible products with complete embedded variants in the selected current or legacy representation. This endpoint is not paginated. |
| `ZETTLE_LIST_PURCHASES` | List Purchases | Return one page of purchases and refunds from up to three years ago, with date and ordering filters plus an opaque continuation cursor. |
| `ZETTLE_LIST_STOCK` | List Stock | Return one page of variant stock balances across Zettle store inventories, optionally filtered by inventory or product. |
| `ZETTLE_LIST_STOCK_UPDATES` | List Stock Updates | Return one page of stock-balance updates made at or after a timestamp, optionally filtered to specific inventories, with a continuation cursor. |
| `ZETTLE_LIST_TAX_RATES` | List Tax Rates | List the connected merchant's tax rates. Zettle does not provide this tax surface outside sales-tax countries. |
| `ZETTLE_LIST_TRACKED_PRODUCTS` | List Tracked Products | Return one page of UUIDs for Zettle products with inventory tracking enabled, with an opaque continuation cursor when more records are available. |
| `ZETTLE_LIST_TRACKING_UPDATES` | List Tracking Updates | Return one page of product inventory-tracking status changes made at or after a timestamp, with a continuation cursor when more are available. |
| `ZETTLE_LIST_WEBHOOK_SUBSCRIPTIONS` | List Webhook Subscriptions | List all webhook subscriptions configured for a Zettle organization. |
| `ZETTLE_MOVE_INVENTORY_STOCK` | Move Inventory Stock | Atomically move product-variant quantities between inventories. This changes stock balances; verify every UUID and quantity before calling. If any movement fails, Zettle applies none of them. |
| `ZETTLE_SET_INVENTORY_TRACKING` | Set Inventory Tracking | Start or stop inventory tracking for one or more Zettle products. Stopping tracking retains saved balances but stops automatic purchase updates. |
| `ZETTLE_SET_LOW_STOCK_LEVELS` | Set Low Stock Levels | Set low-stock refill thresholds and Zettle Go alert settings for product variants across inventories. All definitions are applied in one array request. |
| `ZETTLE_UPDATE_CATEGORY` | Update Category | Rename a category. Zettle requires a non-null name in the JSON body. |
| `ZETTLE_UPDATE_DISCOUNT` | Update Discount | Update selected fields of a discount using JSON merge-patch semantics, optionally guarded by its ETag. |
| `ZETTLE_UPDATE_PRODUCT` | Update Product | Replace a product using Zettle's full update contract. The request requires the product uuid, name, and current ETag from Get Product. |
| `ZETTLE_UPDATE_TAX_RATE` | Update Tax Rate | Update one tax rate. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_UPDATE_TAX_SETTINGS` | Update Tax Settings | Update the organization's taxation mode. This changes tax behavior across the entire organization; verify the intended mode before calling. Zettle documents this tax surface as unavailable outside sales-tax countries. |
| `ZETTLE_UPDATE_WEBHOOK_SUBSCRIPTION` | Update Webhook Subscription | Change a Zettle webhook subscription's selected events, HTTPS destination, transport, or contact email. |
| `ZETTLE_UPLOAD_PRODUCT_IMAGE` | Upload Product Image | Upload one GIF, JPEG, or PNG product image smaller than 5 MB and larger than 50 by 50 pixels. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to PayPal Zettle
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["zettle"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["zettle"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run PayPal Zettle tools with your agent

Send a request, execute the PayPal Zettle tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "List the products in my PayPal Zettle product library"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "List the products in my PayPal Zettle product library" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to PayPal Zettle and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["zettle"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["zettle"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a PayPal Zettle request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to PayPal Zettle tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("List the products in my PayPal Zettle product library")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "List the products in my PayPal Zettle product library",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native PayPal Zettle Integration

- Supports both PayPal Zettle MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your PayPal Zettle data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke PayPal Zettle access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access PayPal Zettle
- Scoped, least privilege access to PayPal Zettle resources
- Full audit trail of agent actions to support review and compliance

## Use PayPal Zettle with any AI Agent Framework

Choose a framework you want to connect PayPal Zettle with:

- [ChatGPT](https://composio.dev/toolkits/zettle/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/zettle/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/zettle/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/zettle/framework/atomic-agent)

## Related Toolkits

- [Addresszen](https://composio.dev/toolkits/addresszen) - Addresszen is a real-time address autocomplete and verification service. It helps capture accurate, deliverable addresses with instant suggestions and validation.
- [Asin data api](https://composio.dev/toolkits/asin_data_api) - Asin data api gives you detailed, real-time product data from Amazon, including price, rank, and reviews. Perfect for e-commerce pros and data-driven marketers who need instant marketplace insights.
- [Baselinker](https://composio.dev/toolkits/baselinker) - BaseLinker is an all-in-one e-commerce management platform connecting stores, marketplaces, carriers, and more. It streamlines order processing, inventory control, and automates your sales operations.
- [Bestbuy](https://composio.dev/toolkits/bestbuy) - Best Buy is a leading retailer offering APIs for product, store, and recommendation data. Instantly access up-to-date retail insights for smarter shopping and decision-making.
- [Bluebarry](https://composio.dev/toolkits/bluebarry) - Bluebarry is a customer data and product-advice platform for shopper identities, profiles, and recommendations. It helps teams analyze customer context and synchronize shopper data for better commerce experiences.
- [Btcpay server](https://composio.dev/toolkits/btcpay_server) - BTCPay Server is a free, open-source, self-hosted Bitcoin payment processor. It lets merchants accept Bitcoin payments directly, cutting out middlemen and boosting privacy.
- [Cdr platform](https://composio.dev/toolkits/cdr_platform) - Cdr platform is an API for purchasing carbon dioxide removal services. It enables businesses to offset emissions by accessing verified carbon removal projects.
- [ClickFunnels 2.0](https://composio.dev/toolkits/clickfunnels) - ClickFunnels 2.0 is a sales funnel and online business platform for marketing, commerce, courses, and websites. It helps businesses build and manage customer journeys from one workspace.
- [Cloudcart](https://composio.dev/toolkits/cloudcart) - CloudCart is an e-commerce platform for building and managing online stores. It helps businesses streamline product listings, orders, and customer engagement.
- [Clover](https://composio.dev/toolkits/clover) - Clover is a point-of-sale and merchant platform that provides payments, orders, inventory, and device APIs. Use it to manage orders, customers, employees, payments, and receipts across locations.
- [Commerce Layer](https://composio.dev/toolkits/commerce_layer) - Commerce Layer is a headless commerce platform with transactional APIs for orders, inventory, pricing, customers, and fulfillment. Use it to centralize ecommerce operations and surface real-time commerce data.
- [Countdown api](https://composio.dev/toolkits/countdown_api) - Countdown API gives you real-time, structured eBay product data, reviews, and seller feedback. Perfect for powering price monitoring, product research, or marketplace analytics workflows.
- [Creem](https://composio.dev/toolkits/creem) - Creem is a merchant-of-record platform for managing products, checkouts, subscriptions, customers, licenses, discounts, transactions, refunds, and revenue operations. Helps businesses handle billing, compliance, and revenue workflows with a unified billing stack.
- [Dpd2](https://composio.dev/toolkits/dpd2) - Dpd2 is a robust email management platform for handling, sorting, and automating email workflows. Streamline your communications and boost productivity with advanced sorting, labeling, and response tools.
- [eBay](https://composio.dev/toolkits/ebay) - eBay is an online marketplace for buying and selling products worldwide. Its public APIs help developers access listings, categories, and marketplace data.
- [Finerworks](https://composio.dev/toolkits/finerworks) - FinerWorks is an online platform for fine art and photo printing services. Artists and photographers use it to order custom prints and manage print inventory efficiently.
- [Fingertip](https://composio.dev/toolkits/fingertip) - Fingertip is a business management platform for selling, booking, and customer engagement—all from a single link. It helps businesses streamline operations and connect with customers across social channels.
- [Fraudlabs pro](https://composio.dev/toolkits/fraudlabs_pro) - FraudLabs Pro is an online payment fraud detection service for e-commerce and merchants. It helps minimize chargebacks and revenue loss by detecting and preventing fraudulent transactions.
- [Gelato](https://composio.dev/toolkits/gelato) - Gelato is a print-on-demand platform for creating products, managing orders, checking stock, and finding shipping options. It helps businesses sell globally with local production, pricing, and fulfillment.
- [Gift up](https://composio.dev/toolkits/gift_up) - Gift Up! is a digital platform for selling, managing, and redeeming gift cards online. It streamlines promotions and gift card transactions for businesses and their customers.

## Frequently Asked Questions

### Do I need my own developer credentials to use PayPal Zettle with Composio?

Yes, PayPal Zettle requires you to configure your own OAuth credentials. Once set up, Composio handles token storage, refresh, and lifecycle management for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
