Connect Stripe to My Academy HQ
Accept tuition payments, automate invoicing, and track billing — all powered by Stripe. Follow these steps to connect your account in under 10 minutes.
Create Your Stripe Account
If you do not have a Stripe account, go to stripe.com and click Start now.
Complete the onboarding process. You will need your school's legal name, bank account details, and tax information.
Once your account is active, you can access the Stripe Dashboard.
Find Your API Keys
In the Stripe Dashboard, navigate to Developers → API keys.
Copy your Publishable key (starts with pk_live_).
Click Reveal live key to copy your Secret key (starts with sk_live_).
Keep both keys somewhere secure — you will need them in a later step.
Use your live keys for production. Test keys (starting with pk_test_ / sk_test_) are for development only and will not process real payments.
Create a Webhook Endpoint
In the Stripe Dashboard, open Workbench → Webhooks. If your account still shows the older Developers Dashboard, use Developers → Webhooks.
Click Create new destination or Create an event destination.
Select API version 2026-07-29.dahlia (recommended), then choose Events on your account. Do not choose connected-account events.
2026-02-25.clover remain supported and do not need to be recreated. My Academy HQ accepts both Clover and Dahlia webhook payloads while new API requests use Dahlia.Select the following event types. This complete set supports every My Academy HQ billing workflow and is checked by Test Connection.
Recurring payment setup
Checkout setup, subscription schedules, and subscription status changes.
checkout.session.completedcheckout.session.expiredsubscription_schedule.createdsubscription_schedule.updatedsubscription_schedule.canceledsubscription_schedule.completedsubscription_schedule.releasedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deleted
Invoices and payments
Invoice status, full and partial payments, failures, and ACH processing.
invoice.createdinvoice.updatedinvoice_payment.paidinvoice.paidinvoice.payment_succeededinvoice.payment_failedinvoice.voidedinvoice.marked_uncollectiblepayment_intent.processingcharge.pending
Refunds
Successful, pending, updated, and failed refund reconciliation.
charge.refundedrefund.createdrefund.updatedrefund.failed
invoice.paid alone. The additional events cover recurring schedules, ACH processing, partial or multiple invoice payments, void and uncollectible states, and refund failures.Continue, choose Webhook endpoint, and paste the Webhook URL shown on your My Academy HQ Integrations page:
https://app.apogee.dev/api/webhooks/stripe/your-school-slug
Create the destination, open it, and click Reveal under Signing secret to copy your Webhook Secret (starts with whsec_).
Enter Your Keys in My Academy HQ
In your admin dashboard, go to Settings → Integrations.
Paste your Publishable Key, Secret Key, and Webhook Secret into the Stripe card fields.
Click Save Changes.
Then click Test Connection. The badge updates to “Ready” only after the Stripe account and webhook endpoint both pass verification. Until then, online invoices and payment links stay paused.
Troubleshooting
Payments are failing or not appearing+
Webhook events are not being received+
ACH payments stay Invoiced instead of Processing+
I see 'Setup Needed' after saving+
Ready to start accepting payments?
Head to your Integrations settings to connect Stripe now.
Go to Integrations