Skip to content

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.

1

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.

2

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.

3

Create a Webhook Endpoint

In the Stripe Dashboard, go to Developers → Webhooks.

Click Add endpoint.

For the endpoint URL, paste the webhook URL shown on your Integrations settings page in My Academy HQ. It follows this format:

https://app.apogee.dev/api/webhooks/stripe/your-school-slug

Under Events to send, select All events or choose only these required events:

  • checkout.session.completed
  • checkout.session.expired
  • subscription_schedule.created
  • subscription_schedule.updated
  • subscription_schedule.canceled
  • subscription_schedule.completed
  • subscription_schedule.released
  • customer.subscription.created
  • customer.subscription.updated
  • customer.subscription.deleted
  • invoice.created
  • invoice.updated
  • invoice_payment.paid
  • invoice.paid
  • invoice.payment_succeeded
  • invoice.payment_failed
  • invoice.voided
  • invoice.marked_uncollectible
  • payment_intent.processing
  • charge.pending
  • charge.refunded
  • refund.created
  • refund.updated
  • refund.failed

Click Add endpoint, then click into the newly created endpoint and click Reveal under Signing secret to copy your Webhook Secret (starts with whsec_).

4

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.

The badge will update to “Connected” once all three keys are saved.

Troubleshooting

Payments are failing or not appearing+
Verify you are using live keys (not test keys). Confirm the webhook endpoint URL matches exactly. Check that your Stripe account has completed onboarding and is activated.
Webhook events are not being received+
Ensure the webhook endpoint is enabled, the signing secret matches what you entered, and the endpoint includes all required events: checkout.session.completed, checkout.session.expired, subscription_schedule.created, subscription_schedule.updated, subscription_schedule.canceled, subscription_schedule.completed, subscription_schedule.released, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.created, invoice.updated, invoice_payment.paid, invoice.paid, invoice.payment_succeeded, invoice.payment_failed, invoice.voided, invoice.marked_uncollectible, payment_intent.processing, charge.pending, charge.refunded, refund.created, refund.updated, refund.failed. In Stripe Dashboard under Webhooks, check for failed delivery attempts.
ACH payments stay Invoiced instead of Processing+
Confirm your Stripe webhook endpoint sends payment_intent.processing. ACH payments can remain pending for several days, and this event lets My Academy HQ show them as Processing while Stripe finishes the transfer.
I see 'Not Configured' after saving+
All three keys (publishable, secret, and webhook secret) must be saved. If you left a field blank, it keeps the previous value — make sure all three were entered at least once.

Ready to start accepting payments?

Head to your Integrations settings to connect Stripe now.

Go to Integrations