# Create Teachable coupon codes for a sale

> Set up Teachable coupons for a launch or sale: check which codes are taken, pick the scope, respect the $1 floor, and archive old codes after.

Source: https://cotlet.dev/integrations/teachable-api-mcp-server/create-discount-coupons

A launch, a Black Friday sale or a partner promo needs its own code, and in Teachable each code is one form under Site > Coupons. A sale with a school code, two product codes and five partner codes means filling that form eight times and hoping none of the codes clash.

Cotlet does it in your own Teachable account with list\_coupons, create\_coupon and archive\_coupon, called by your AI agent, an n8n workflow or a script.

[Request access](https://cotlet.dev/app/signup?app=teachable) [All Teachable tools](https://cotlet.dev/integrations/teachable-api-mcp-server)

Hosted · nothing to install or maintain

Official options

## Can Teachable do this on its own?

Teachable's public API has no coupon endpoint, its experimental MCP article lists no coupon actions, and Zapier has no coupon action (checked 12 Oct 2026). Coupons are included on every Teachable plan since the June 2025 plan change, but each one is made by hand in the admin. The Bulk Single Use generator covers one-time random codes only, and those codes live only in the CSV you download.

By hand

## How you do it in Teachable today

1. Go to Site > Coupons > School Coupons for a code that covers the whole school or one product type, or open the product and its Coupons tab for a code on that product only.
2. Choose a percentage or a fixed amount, then set whether the Teachable discount applies to all transactions or only the initial transaction of a payment plan or subscription.
3. Type a code of letters and numbers only, and add an optional expiration date and a number available of up to 10,000 uses.
4. For one-time codes, pick Add New Coupon > Bulk Single Use and click Generate CSV. Teachable does not show these codes in the school admin afterwards, so the CSV is the only copy.
5. Repeat the form for every product and partner. The expiration date is the edit Teachable documents for an existing coupon, so a wrong discount or scope means creating another coupon.

With an agent

## How to create Teachable coupon codes for a sale

Prompt

```
Make a 30% coupon BLACKFRIDAY26 for all courses, 100 uses, ending 1 December. Check first that the code is free.
```

1. 01  
### Check the code is free  
The agent reads list\_coupons with archived codes included before creating anything. An active code with the same name is reported, not duplicated. Teachable rejects a code that another product already uses, so the agent proposes a variant such as BF26COURSES up front instead of failing halfway through a batch.
2. 02  
### Pick the narrowest scope that fits  
"All courses" becomes applies\_to courses, "everything" becomes all\_products, and a single product becomes a pricing plan coupon. Teachable applies product coupons to specific pricing plans, so when you name a product the agent asks which plan you mean and for its ID instead of guessing.
3. 03  
### Respect the price floor  
Before a discount goes out, the agent compares it with the plan prices you give it. A discount that would leave a paid plan between $0.01 and $0.99 is stopped with the numbers shown. A 100% coupon is created only when you ask for free access in so many words.
4. 04  
### Create each code with your OK  
Each create\_coupon call shows code, scope, discount, cadence, expiry and number available for approval. For a fixed amount the agent states the currency, because a buyer who checks out in another currency through Adaptive Pricing does not get the discount.
5. 05  
### Close the sale afterwards  
A follow-up run, the day after the end date, lists codes that are past their expiry or used up. archive\_coupon runs only on the ones you confirm, and partner codes still in use are left alone with their remaining count reported.

### What you get back

Example data

```
Checked 23 coupons, archived ones included.
BLACKFRIDAY is still active from 2025 (318 uses), so BLACKFRIDAY26 was created instead, after your OK.
BLACKFRIDAY26: 30% off all courses, initial transaction only, expires 1 Dec 2026, 100 available.
PARTNERANNA: $20 off the one-time plan of Python for Beginners, USD checkouts only.
Not created: 95% off Team Onboarding, which would leave the $15 plan at $0.75.
Ready to archive: SUMMER20, expired 1 Sep, 212 of 500 used.
```

### Other ways to ask

- Make five partner codes, 20% off courses only, one per affiliate name in partners.csv, each limited to 50 uses.
- Create LAUNCH40 for the Data Analysis course, 40% off the first payment of the monthly plan only, valid until Sunday.
- Which Teachable coupons expired or ran out last month? Archive them after I confirm the list.

Before you automate it

## What Teachable allows, and what to know first

- Teachable returns an error when a new coupon uses a code that another product already uses, so one code cannot be reused across products.
- Teachable does not sell a paid product below $1.00 USD: a 100% off coupon is allowed, but a discount that leaves a price between $0.01 and $0.99 is not.
- Teachable applies coupons to the main product only, not to order bumps, which take their discount from the order bump's sales price field.
- Archiving a Teachable pricing plan invalidates every outstanding coupon on that plan, so retiring an old price also ends codes already shared with buyers.
- Teachable fixed-amount coupons apply only when the purchase is in the coupon's currency, which matters when Adaptive Pricing shows a student a local price.

create\_coupon and archive\_coupon ask for your OK by default. To run it on a schedule without you, switch confirmation off for those tools in your dashboard.

Sources: [Teachable Help: Price your products (coupons)](https://support.teachable.com/en/articles/15627279-price-your-products) · [Teachable Help: Price your products (pricing plans and archiving)](https://support.teachable.com/en/articles/11682476-price-your-products) · [Teachable Help: New Teachable plans in June 2025](https://support.teachable.com/en/articles/11682410-new-teachable-plans-in-june-2025)

REST

## Call create\_coupon from a script

curl

```
curl https://cotlet.dev/api/v1/teachable/create_coupon \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Black Friday 2026","code":"BLACKFRIDAY26","discount_type":"percent","discount":30,"applies_to":"courses","expires_at":"2026-12-01","quantity":100}'
```

Example response

```
{
"coupon_id": "3918274",
"name": "Black Friday 2026",
"code": "BLACKFRIDAY",
"discount": "30%",
"applies_to": "courses",
"expires_at": "2026-12-01",
"quantity": 100,
"used": 0,
"status": "active"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is teachable\_create\_coupon. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/teachable-api-mcp-server#automations)

Tools

## Teachable tools this automation uses

__Cotlet Teachable tools used to create Teachable coupon codes for a sale__
| Tool | Parameters |
| --------------- | ------------------------------------------------------------------------------------------- |
| list\_coupons | include\_archived |
| create\_coupon | name, code, discount\_type, discount, applies\_to, pricing\_plan\_id, expires\_at, quantity |
| archive\_coupon | coupon\_id |

[All 15 Teachable tools with descriptions](https://cotlet.dev/integrations/teachable-api-mcp-server#tools)

## More Teachable automations

- [Moderate and answer Teachable lesson comments](https://cotlet.dev/integrations/teachable-api-mcp-server/moderate-lesson-comments)
- [Update Teachable lessons from Markdown files](https://cotlet.dev/integrations/teachable-api-mcp-server/update-lessons-from-markdown)
- [Teachable API and MCP server: every tool](https://cotlet.dev/integrations/teachable-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## Give your agent access to Teachable.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Teachable.

[Request access](https://cotlet.dev/app/signup?app=teachable)
