Payment Integration
The admissions system can integrate with Stripe to accept online payments for application fees, tuition deposits, and other admissions-related charges. This article covers the setup process and how payments work within the admissions workflow.
Overview
Payment integration allows families to:
- Pay application or registration fees directly through admissions forms.
- Make tuition deposits as part of the enrollment process.
- Complete payments securely using credit/debit cards.
Admissions staff can:
- Track payment status for each applicant.
- View payment history and receipts.
- Configure which fees require online payment.
Setting Up Stripe
Prerequisites
Before configuring Stripe in the admissions system, you need:
- A Stripe account (create one at stripe.com).
- Your Stripe API keys (publishable key and secret key).
- Webhook endpoints configured in your Stripe dashboard.
Configuration Steps
- Obtain your Stripe API keys from the Stripe Dashboard:
- Navigate to Developers > API Keys.
- Copy the Publishable key (starts with
pk_). - Copy the Secret key (starts with
sk_).
- Provide the keys to your system administrator for configuration in the environment variables.
- Configure webhook endpoints in Stripe to point to your application's webhook URL.
WARNING
Never share or expose your Stripe Secret Key. It should only be stored in server-side environment variables, never in frontend code or client-accessible locations.
Webhook Configuration
Webhooks allow Stripe to notify the admissions system when payment events occur:
- In the Stripe Dashboard, go to Developers > Webhooks.
- Add an endpoint pointing to your application's webhook URL.
- Select the events to listen for:
payment_intent.succeededpayment_intent.payment_failedcheckout.session.completed
- Copy the webhook signing secret and provide it to your system administrator.
Payment Flow
For Families
- A family submits an admissions form that includes a payment step.
- They are redirected to a Stripe-hosted checkout page (or inline payment form).
- They enter their payment details and complete the transaction.
- Upon success, they are redirected back to a confirmation page.
- The payment is recorded against the lead/applicant record.
For Admissions Staff
- Navigate to a lead's detail page.
- View the payment status in the lead's financial section.
- Payment history shows all transactions with amounts, dates, and statuses.
Payment Statuses
| Status | Meaning |
|---|---|
| Pending | Payment initiated but not yet completed |
| Succeeded | Payment successfully processed |
| Failed | Payment attempt failed |
| Refunded | Payment was refunded |
Linking Fees to Forms
To require payment on an admissions form:
- Create the fee items in the Fees configuration.
- In the form builder, add a payment step that references the relevant fee.
- When families submit the form, the payment step triggers the Stripe checkout.
Security
- All payment data is handled by Stripe -- the admissions system never stores credit card numbers.
- Communication with Stripe uses HTTPS/TLS encryption.
- Webhook signatures are verified to prevent tampered notifications.
- PCI compliance is handled by Stripe's hosted payment pages.
Troubleshooting
| Problem | Solution |
|---|---|
| Payments not processing | Verify Stripe API keys are correct and the account is active. |
| Webhooks not received | Check the webhook endpoint URL and signing secret in Stripe Dashboard. |
| Payment shows as pending | The webhook may not have been received yet. Check Stripe Dashboard for the payment status. |
| Refund needed | Process refunds directly through the Stripe Dashboard. The admissions system updates when the webhook is received. |