No Fianto fee during the beta. Any fee comes with at least 30 days notice. See pricing
Use cases8 min read

Sell an online course for USDC and enrol every buyer automatically.

Keep the course where it is and sell it from a Fianto shop: when a buyer pays in USDC, the shop sends a purchase.paid event to a Zapier or Make webhook, and an action such as Teachable's "Enroll User in Course" or Kajabi's "Grant Access to an Offer" enrols the buyer's email. For a one-time course with no automation at all, paste single-use coupon codes from your course platform as delivery codes, one per buyer.

On this page
How can a course platform enrol buyers who paid in USDC?How do you set up the course in a Fianto shop?How does a Zap enrol a buyer after a USDC payment?Can you enrol buyers with coupon codes instead of Zapier?What do you and your students pay?What can go wrong when selling a course for USDC?SourcesQuestions
TL;DR
  • The shop collects USDC and the buyer's email; Zapier or Make enrols that email in Teachable, Thinkific or Kajabi, and a monthly course is unenrolled when subscription.ended arrives.
  • Without Zapier, sell single-use 100%-off codes from your course platform as Fianto delivery codes: each paid buyer gets one on the receipt and in the buyer email.
  • You pay nothing. Buyers of a one-time course pay the price plus a Solana fee under $0.01, and there is no Fianto fee during the beta.

How can a course platform enrol buyers who paid in USDC?

If your course platform does not take USDC on Solana itself (Teachable's pricing page, for example, lists processing fees only for card and PayPal sales), the payment happens in a Fianto shop and the enrolment happens in your course platform, joined by either an automation or a code. As of 15 October 2026, Zapier lists these actions for three well-known platforms:

PlatformZapier action that opens accessZapier action that closes it
Teachable"Create New User", then "Enroll User in Course""Unenroll Student From Course by Email"
Thinkific"Enroll User" (creates or finds the user, then enrols)"Unenroll User"
Kajabi"Grant Access to an Offer""Revoke Access to an Offer"

Each of these needs the buyer's email, and email is exactly what a Fianto shop collects. A shop product of the kind "Digital product" asks for it by default, as Required. That is why the shop is the right Fianto surface here: its "Connect an app" setting sends shop purchases to Zapier or Make, while payment links and API sales never reach it.

How do you set up the course in a Fianto shop?

  1. Create the product in the Fianto dashboard with its price: one-time for a course people keep, or monthly (every 30 days) or yearly (every 365 days) for a course library people rent. A price can be at least 0.01 and at most 1,000,000 USDC.
  2. Open the shop and add the product. Set its kind to Digital product, or Membership for a recurring library; both ask for the buyer's email as Required by default. Keep it Required: the automation has nothing to enrol without it.
  3. Under "After a purchase", write a message of up to 2,000 characters: where to log in, which email the account uses, and whom to write to if the invite is missing. Add your course platform's login page as the link.
  4. Publish. Shops publish, and take payments, once Fianto has approved your merchant account.

One price of one product per purchase: there is no cart. A bundle of three courses is its own product, enrolled by its own Zap. The full shop walk-through, themes and limits included, is in the no-code USDC shop post.

How does a Zap enrol a buyer after a USDC payment?

  1. In Zapier, start a Zap with the "Webhooks by Zapier" Catch Hook trigger and copy its URL. In Make, use a Custom webhook.
  2. In Fianto, open Shop settings, Connect an app, and paste the URL. Only hooks.zapier.com and Make's hook hosts are accepted.
  3. Press "Send a test". The sample is a purchase.paid with example data and the field test set to "true"; add a Filter step that drops anything with test, so the sample never enrols anyone.
  4. If the shop sells more than one course, add a Filter on product_id (fian_prod_...), so each Zap enrols only its own course.
  5. Add the enrol action from the table above and map buyer_email to the student email.
  6. For a monthly or yearly course, build a second Zap filtered on event equals subscription.ended, with the unenrol or revoke action.

Every event is flat JSON, so Zapier and Make can map each field without a path. These fields are on every event, null when empty, except that a purchase carries paid_at and an ending carries ended_at:

FieldWhat it holds
event, id, created_atpurchase.paid or subscription.ended, the event id and when it was created
shop, shop_urlYour shop name and its address
product, product_idThe product name and its id
price, amount_paid, currencyWhat you receive, what the buyer paid, and USDC
buyer_emailThe address the buyer typed, which nobody verifies
order_id, subscription_id, intervalThe shop order (shop_...), the subscription id and month or year, null for one-time
paid_at or ended_atWhen it was paid, or when the subscription ended

Check the small print on each action first. Zapier marks Teachable's actions as available to schools on "Professional plans and higher" and Thinkific's enrol and unenrol actions as available on the Grow plan and above. Thinkific's "Enroll User" also requires a first and last name, which the shop does not collect, so fill them with fixed text. Kajabi's grant and revoke actions require an external user ID: map order_id, which is the same on a purchase and on its later subscription.ended, so the revoke finds the member the grant created.

One shop, no code, USDC straight to your wallet. You pay nothing.

See courses and memberships

Can you enrol buyers with coupon codes instead of Zapier?

Yes, for a one-time course: generate single-use codes on your course platform and sell them as Fianto delivery codes. Kajabi's help centre says "Bulk Coupons generate a batch of unique codes for the Offers you attach, and each code can only be used once." A free coupon there is a Percentage off coupon with the value 100, and "Export all codes" gives you a .CSV file of them. Create the bulk coupon at 100% off, export the codes, and paste the list into the product's delivery codes in your Fianto shop.

  • Each paid buyer gets one code, shown on the receipt page and in the buyer email, and redeems it at your course checkout.
  • Paste one code per line, up to 200 characters each. A product holds up to 5,000 unused codes, and a duplicate is refused.
  • You get an email when five or fewer codes are left. At zero the product shows "Sold out" until you add more.
  • Codes are stored encrypted, and the dashboard shows you only a few trailing characters of a code it gave out, so keep your exported CSV.

Receipt pages are not private: anyone with the link sees the code. A single-use code that the buyer has already redeemed is worthless to anyone else, which is why codes must be single-use. They also cannot take access away later, so use Zapier for a monthly library. On Teachable or Thinkific, check first that your plan offers single-use codes that cover the full price; this post confirms both only for Kajabi, where a free coupon on a recurring offer still asks the customer for card details. How a shop holds and hands out codes is covered in selling licence keys for USDC.

What do you and your students pay?

You pay nothing, and the price you set lands in your wallet in the same transaction the student signs; Fianto never holds it. There is no Fianto fee during the beta. After it, the student pays a Fianto fee of about 0.1 to 0.5% on top of your price, and you still pay nothing.

Course priceLands in your walletStudent pays in USDCStudent also pays in SOL
149.00 one-time149.00149.00The transaction fee, under $0.01
19.00 monthly19.00 each charge19.01 each charge today, the 0.01 USDC network fee includedThe fee of the one transaction they sign, plus account rent

The rent on the monthly row is about 0.00144 SOL as of 15 October 2026 for the subscription account, returned when the student reclaims it after the subscription ends, and about 0.00119 SOL once for wallet setup on a wallet's first subscription, not returned; the checkout shows the live figure. The 0.01 USDC network fee applies today to subscription charges on plans created since 6 October 2026, never to one-time sales.

For scale: Teachable lists its Starter plan at $39 a month billed monthly with a 7.5% transaction fee on its own checkout, as of 15 October 2026; on a $149 sale that would be about $11.18. A USDC sale through your Fianto shop never passes through that checkout. Keep your card checkout too: a student without a Solana wallet cannot pay in USDC at all, so USDC works as a second way to pay, not a replacement.

What can go wrong when selling a course for USDC?

  • A typo in the email. The address is never verified, so the Zap enrols the typo. Your after-purchase message should say which email the account was made for and how to reach you.
  • Refunds are USDC you send back from your own wallet. Unenrol the student by hand afterwards: the automation has no refund event.
  • A monthly student cancels in the customer portal at fianto.xyz/my. Access runs to the end of the paid period, and subscription.ended triggers the unenrol Zap.
  • Fianto sends subscribers no renewal reminders. The buyer email after the purchase carries your message, the code if there is one, and a link to manage the subscription; anything later is yours to send.
  • Payment is USDC on Solana only. Students need a Solana wallet with USDC and a little SOL.

Zapier and Make recipes for other tools, such as mailing lists and spreadsheets, are in Zapier and Make automations for USDC sales, and what the buyer sees after paying is in the Fianto docs on buying from a shop.

Sources
Questions

Questions about selling a course for USDC.

Can Teachable, Thinkific or Kajabi accept USDC directly?

Teachable's pricing page lists processing fees only for card and PayPal sales; check your own platform's payment settings. Either way, you can sell the course from a Fianto shop and enrol the buyer through Zapier or a coupon code.

Which Fianto sales trigger the Zapier or Make enrolment?

Shop purchases only. Payment links and API checkouts never send the shop automation events; use webhooks for those.

Can I sell a monthly course library for USDC?

Yes. Give the product a monthly or yearly price, enrol on purchase.paid and unenrol on subscription.ended with a second Zap.

What if a student mistypes their email at checkout?

The Zap enrols the mistyped address, because Fianto does not verify emails. Fix the enrolment by hand in your course platform.

Can I offer a discount on the course?

Yes. A Fianto coupon from Billing, then Coupons, lowers the price at checkout, but the discounted price must stay at least 0.01 USDC.

Read next.

Use casesProduct8 min read

Sell licence keys and game keys for USDC with shop delivery codes

Fianto's shop sells licence keys and game keys through delivery codes: you paste your keys into a product, each buyer who pays in USDC gets exactly one, on the receipt and in the buyer email, and the product shows as sold out when none are left. A product holds up to 5,000 unused keys, a key is reserved while its buyer pays so two buyers never get the same one, and you are emailed when five or fewer remain.

Use cases10 min read

A paid Telegram group or channel for USDC: join requests, webhooks and removal

A paid Telegram group on USDC works best with a join-request link: anyone can ask to join, your bot sends people who have not paid a Fianto checkout link, and it approves the request once Fianto's subscription.created webhook confirms the payment. When subscription.ended arrives, one Bot API call removes the member. Fianto collects the USDC into your wallet every 30 or 365 days; the Telegram side is a small bot you run.

Product7 min read

Zapier and Make automations for USDC shop sales

A Fianto shop can send its sales to Zapier or Make with no code: paste a Zapier "Catch Hook" URL or a Make "Custom webhook" URL into Connect an app in your shop settings. Fianto then posts two events as flat JSON, purchase.paid when someone pays and subscription.ended when a subscription bought in the shop ends. Only shop sales are sent: payment link and API sales, renewals and failed renewals are not.

Your course stays put. The payment moves.

List it in a shop, connect Zapier, send a test.

New posts are announced on X and Discord.