Billing
Payment processing
A patient payment reaches ArkCloud one of three ways: the patient pays by card in the portal, staff take a card through Stripe's form on the account page, or staff record a payment that was taken somewhere else. Both card paths need Stripe and the practice's connected Stripe account.
Written for: Billing and RCM teams · Front desk · Finance
Is card processing on?
Card payments need both Stripe keys on the deployment and the practice's own connected Stripe account. Patient money is always taken on the practice's account, never on ArkCloud's. See connecting Stripe.
Record a payment taken elsewhere
ArkCloud RCM → My Work → Accounts → (account) → Payments
- Choose the method: cash, cheque, credit or debit card, ACH or money order.
- Enter the amount and, for a cheque or card, the reference number.
- Save. The payment is recorded as received - ArkCloud does not contact any processor - and applied to the account.
Take a card payment at the desk
| Field or control | What it means |
|---|---|
| Where | Take card payment on the AR account page. Needs process_payments (Agent, Supervisor, Admin). |
| Card entry | In Stripe's own form, on the practice's connected Stripe account. Card numbers go to Stripe, not to ArkCloud. Cards only. |
| Limits | At most the patient's share of the balance, less card payments already in flight. Until Stripe is connected the dialog says why and charges nothing. |
| Duplicate protection | The payment row is written first, keyed by a request id the browser reuses on retry, and Stripe is asked with a key derived from that row, so a retry cannot charge twice. |
| Result | The money is posted to the account when Stripe's signed webhook confirms the payment, not when the browser reports success. |
A card payment in the portal
| Field or control | What it means |
|---|---|
| Who | The patient, in the portal through the link staff sent (or its code typed on the sign-in page), after confirming their date of birth. |
| Card entry | In a Stripe card field. Card numbers go to Stripe, not to ArkCloud. |
| Limits | At least the organisation's minimum, at most the patient's share of the balance (not what insurance still owes; the portal has nowhere to hold a credit). A convenience fee is added if the organisation has one configured. |
| Duplicate protection | Each attempt carries a key generated by the patient's browser and reused on retry. The database holds one record per key, so a double click or retry cannot charge twice. |
| Result | The charge is made on the practice's connected Stripe account and posted to the account when Stripe's signed webhook confirms it. |
Where a payment lands
| Field or control | What it means |
|---|---|
| Charges | Applied to the oldest charges the patient owes first, then to self-pay balances that are not on a claim. It is never applied to a line billed to insurance; whatever is left over stays on the account as an unallocated credit. |
| Account balance | Restated from the ledger identity. |
| Payment ledger | One dated row, which dashboards and payment reports read. |
| Stripe events | Stripe tells ArkCloud about succeeded and failed payments, refunds, disputes and changes to the practice's account. A refund made in Stripe is reversed on the account. |
