On this page
- 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:
| Platform | Zapier action that opens access | Zapier 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?
- 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.
- 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.
- 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.
- 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?
- In Zapier, start a Zap with the "Webhooks by Zapier" Catch Hook trigger and copy its URL. In Make, use a Custom webhook.
- In Fianto, open Shop settings, Connect an app, and paste the URL. Only hooks.zapier.com and Make's hook hosts are accepted.
- 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.
- If the shop sells more than one course, add a Filter on product_id (fian_prod_...), so each Zap enrols only its own course.
- Add the enrol action from the table above and map buyer_email to the student email.
- 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:
| Field | What it holds |
|---|---|
event, id, created_ | purchase.paid or subscription.ended, the event id and when it was created |
shop, shop_ | Your shop name and its address |
product, product_ | The product name and its id |
price, amount_, currency | What you receive, what the buyer paid, and USDC |
buyer_ | The address the buyer typed, which nobody verifies |
order_, subscription_, interval | The shop order (shop_...), the subscription id and month or year, null for one-time |
paid_ or ended_ | When 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_, 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 membershipsCan 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 price | Lands in your wallet | Student pays in USDC | Student also pays in SOL |
|---|---|---|---|
| 149.00 one-time | 149.00 | 149.00 | The transaction fee, under $0.01 |
| 19.00 monthly | 19.00 each charge | 19.01 each charge today, the 0.01 USDC network fee included | The 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.