Transactions Management
View, manage, and process all payment transactions including automated payments, manual payments, and payment logs.
Admin Panel → Transactions (/admin/transactions)
All Transactions
The All Transactions view provides a comprehensive list of every payment processed through the platform, regardless of payment gateway or status.
All Transactions - Complete payment history with filtering and search
Transaction Table Columns
| Column | Description | Sortable |
|---|---|---|
| Transaction ID | Unique identifier for the transaction (TRX-XXXXXX) | Yes |
| User | User who made the payment with avatar and name | Yes |
| Amount | Payment amount in the transaction currency | Yes |
| Gateway | Payment gateway used (Stripe, PayPal, Manual, etc.) | Yes |
| Plan | Subscription plan purchased | Yes |
| Status | Transaction status (Completed, Pending, Failed, Refunded) | Yes |
| Date | Transaction date and time | Yes |
| Actions | View details, refund, or export options | No |
Transaction Statuses
| Status | Badge | Description |
|---|---|---|
| Completed | Completed | Payment successfully processed and subscription activated |
| Pending | Pending | Awaiting payment confirmation or manual approval |
| Processing | Processing | Payment is being processed by the gateway |
| Failed | Failed | Payment was declined or encountered an error |
| Refunded | Refunded | Payment was refunded to the user |
| Cancelled | Cancelled | Transaction was cancelled before completion |
Transaction Details
Click on any transaction to view complete details including payment gateway response, user information, and timestamps.
Detail View Sections
- Transaction Info - ID, amount, currency, status, and dates
- User Details - Name, email, and subscription history
- Payment Gateway - Gateway name, transaction reference, and response data
- Subscription - Plan purchased, billing cycle, and expiration date
- Gateway Response - Raw JSON response from the payment gateway
Complete transaction details with gateway response data
Transaction Data Fields
| Field | Type | Description |
|---|---|---|
id |
Integer | Auto-incrementing primary key |
transaction_id |
String | Unique transaction reference (TRX-XXXXXX) |
user_id |
Integer | Foreign key to users table |
subscription_plan_id |
Integer | Foreign key to subscription plans table |
amount |
Decimal | Transaction amount |
currency |
String | ISO currency code (USD, EUR, etc.) |
payment_gateway |
String | Gateway identifier (stripe, paypal, manual, etc.) |
gateway_transaction_id |
String | Reference ID from payment gateway |
status |
Enum | pending, processing, completed, failed, refunded, cancelled |
billing_cycle |
String | monthly or yearly |
gateway_response |
JSON | Full response data from payment gateway |
ip_address |
String | User's IP address at time of transaction |
created_at |
Timestamp | Transaction creation time |
completed_at |
Timestamp | Transaction completion time |
Payment Log
The Payment Log provides a detailed audit trail of all payment gateway interactions, webhook events, and system actions related to payments.
Admin Panel → Transactions → Payment Log (/admin/payment-logs)
Payment Log - Detailed audit trail of all payment events
Log Event Types
| Event Type | Description |
|---|---|
| payment.initiated | User started a payment process |
| payment.completed | Payment successfully completed |
| payment.failed | Payment failed with error details |
| webhook.received | Webhook received from payment gateway |
| webhook.processed | Webhook successfully processed |
| webhook.failed | Webhook processing failed |
| refund.initiated | Refund request initiated |
| refund.completed | Refund successfully processed |
| subscription.activated | User subscription activated after payment |
| subscription.renewed | Subscription automatically renewed |
Manual Payments
Manual payments require admin approval before the subscription is activated. This includes bank transfers, mobile money, and custom payment methods.
Admin Panel → Transactions → Manual Payments (/admin/manual-payments)
Manual Payments - Queue of payments awaiting admin approval
Manual Payment Workflow
User selects a manual payment method (e.g., Bank Transfer), views payment instructions, and submits proof of payment (receipt, transaction ID, or screenshot).
The payment appears in the Manual Payments queue with status "Pending". Admin receives a notification about the new pending payment.
Admin views the payment details, user's proof of payment, and verifies the transaction in their bank/payment system.
Admin approves (activates subscription) or rejects (provides reason) the payment. User receives an email notification of the decision.
Review manual payment with proof of payment and action buttons
Manual Payment Fields
| Field | Description |
|---|---|
| User Info | Name, email, and registration date of the user |
| Plan Requested | Subscription plan and billing cycle (monthly/yearly) |
| Amount | Expected payment amount and currency |
| Payment Method | Manual gateway used (Bank Transfer, Mobile Money, etc.) |
| Transaction Reference | User-provided reference number or transaction ID |
| Proof of Payment | Uploaded receipt or screenshot (click to view full size) |
| User Notes | Any notes or comments from the user |
| Submitted At | Date and time the payment was submitted |
Approving a Payment
When approving a manual payment:
- Click the Approve button on the payment
- Optionally add an admin note (visible only to admins)
- Confirm the action
- The system will:
- Mark the transaction as "Completed"
- Activate the user's subscription
- Send approval email to the user
- Log the action in the payment log
Approve payment confirmation dialog
Rejecting a Payment
When rejecting a manual payment:
- Click the Reject button on the payment
- Provide a rejection reason (required, sent to user)
- Optionally add an admin note (internal only)
- Confirm the action
- The system will:
- Mark the transaction as "Rejected"
- Send rejection email with reason to user
- Log the action in the payment log
Reject payment dialog with reason field
Always verify payment proof against your actual bank/payment records before approving. The proof image can be edited by users.