Virtual Terminal
Process credit card payments directly from your desk. Enter card details on behalf of your customer, charge their card through Stripe, and record the payment -- all in one step.
Prerequisites
The virtual terminal requires an active Stripe payment gateway. If you have not set one up yet, follow these steps first:
- Go to Settings → Payment Gateway Settings
- Click Add Gateway and select Stripe
- Enter your Stripe Publishable Key and Secret Key
- Find these at dashboard.stripe.com/apikeys
- Use test keys (pk_test_... / sk_test_...) while setting up
- Switch to live keys (pk_live_... / sk_live_...) when ready for real payments
- Click Test Connection to verify your keys work
- Save the gateway
Once a gateway is active, the Virtual Terminal becomes available in the sidebar under Payments.
Processing a Payment
To process a credit card payment through the virtual terminal:
- Navigate to Virtual Terminal from the sidebar
- Select a Customer from the dropdown (or type to search)
- Optionally select an Invoice to apply the payment to
- Enter the Payment Amount
- Enter the customer's Card Details:
- Card number
- Expiration date (MM/YY)
- CVC / Security code
- Review the Fee Preview (see below)
- Click Process Payment
BizBooks Pro sends the card information directly to Stripe using their secure card element. The card data never passes through or is stored on your computer -- it goes straight to Stripe's PCI-compliant servers.
Selecting Customer & Invoice
You must select a customer before processing a payment. The customer dropdown shows all active customers in your company.
Applying to an Invoice
If the customer has outstanding invoices, you can select one to apply the payment to:
- The invoice dropdown shows all unpaid and partially-paid invoices for the selected customer
- Selecting an invoice auto-fills the payment amount with the invoice balance
- You can override the amount to process a partial payment
- The invoice status updates automatically after successful payment (Paid or Partially Paid)
Payment Without Invoice
You can also process payments without linking to an invoice. This is useful for:
- Advance deposits or retainers
- Payments for services not yet invoiced
- General customer payments on account
Fee Preview
Before you submit the payment, BizBooks Pro shows a fee breakdown based on your gateway settings:
| Field | Description |
|---|---|
| Payment Amount | The gross amount being charged to the card |
| Processing Fee | The merchant fee charged by Stripe (e.g., 2.9% + $0.30). This is calculated from your gateway fee settings. |
| Net Amount | The amount you receive after fees are deducted |
The fee calculation uses the percentage and flat fee configured in your gateway settings. If your Stripe account has custom pricing, update the fee settings to match.
Payment Confirmation
After a successful payment, BizBooks Pro displays a confirmation with:
- Transaction ID: The Stripe payment intent ID for your records
- Amount charged: The amount successfully processed
- Fee deducted: The processing fee amount
- Net deposited: The amount that will be deposited to your bank
- Invoice status: Updated status if an invoice was selected
BizBooks Pro automatically creates the corresponding journal entry:
- Debit your deposit/bank account (net amount)
- Debit your payment processing fee expense account (fee amount)
- Credit accounts receivable or revenue (gross amount)
Recent Payments
The Virtual Terminal page shows a list of recent gateway payments. For each payment, you can see:
- Date and time of the transaction
- Customer name
- Amount charged
- Fee amount
- Net amount received
- Stripe transaction ID
- Status (succeeded, failed, refunded)
Click on any payment to view its full details, including the associated journal entry and invoice (if applicable).
Troubleshooting
No Gateway Found
If the Virtual Terminal shows "No payment gateway configured" or the card entry form does not appear:
- Go to Settings → Payment Gateway Settings
- Verify you have at least one Stripe gateway added
- Make sure the gateway status is Active
- Click Test Connection to confirm the API keys are valid
- If the test fails, verify your keys at Stripe Dashboard
Payment Declined
If a payment is declined, Stripe returns a reason code. Common reasons include:
- Insufficient funds: The card does not have enough available balance
- Incorrect CVC: The security code entered does not match
- Expired card: The card expiration date has passed
- Card declined: The issuing bank rejected the charge (customer should contact their bank)
- Processing error: A temporary issue with Stripe -- try again in a few minutes
The specific decline reason is displayed in the error message. No charge is made and no journal entry is created for declined payments.
- 4242 4242 4242 4242 -- Successful payment
- 4000 0000 0000 0002 -- Card declined
- 4000 0000 0000 9995 -- Insufficient funds