How card payments work in Chorum POS

Last updated:

Chorum's Point of Sale takes card payments through a Stripe Terminal reader. This page explains where card data goes, what Chorum stores, and what that means for your PCI obligations.

Chorum ERP - POS.png

The short version

Card data never reaches Chorum's servers. The reader encrypts it and sends it directly to Stripe. Chorum orchestrates the payment using Stripe's API and stores only a payment reference.

What happens when a customer pays

  1. The till asks Stripe to create a payment for the sale amount, and tells the reader to start.

  2. The customer taps, inserts or swipes. The card is read by the reader.

  3. The reader encrypts the card data and sends it straight to Stripe. It does not pass through Chorum.

  4. Chorum checks with Stripe whether the payment succeeded.

  5. On success, Chorum captures the payment and records the reference against the sale.

  6. The sale completes as normal: invoice raised, stock relieved, journals posted.

What travels where

Cardholder to reader
Card number, expiry, security code, chip or contactless data. Card details involved: yes, inside the reader only.
Reader to Stripe
Encrypted card data. Card details involved: yes, encrypted, and not via Chorum.
Till to Chorum
Register, amount, currency, payment reference. Card details involved: no.
Chorum to Stripe
Payment, reader, charge and refund references, amounts. Card details involved: no.
Chorum to its database
Payment reference and status against the sale. Card details involved: no.

The only payment data Chorum handles is Stripe's own opaque identifiers and the amount. These are not cardholder data.

What this means for PCI DSS

The reader is a PCI-approved device and it is the point at which card data is encrypted. Because card data goes from the reader to Stripe without entering Chorum, the Chorum application is not part of your cardholder data environment for storing or processing card numbers. Stripe is the payment processor.

In practice this usually places a merchant in a reduced self-assessment scope. That is commonly SAQ P2PE where a validated point-to-point encryption solution is in use, or an SAQ C class questionnaire otherwise.

Confirm your questionnaire with your acquirer and with Stripe. We cannot tell you which SAQ applies to your business. Scope also depends on your reader model, how it was provisioned, and how your store network is segmented. Those are outside Chorum.

Who is responsible for what

Chorum keeps card data off our servers, protects your Stripe API key, authenticates every payment action, and secures transport to Stripe.

Stripe captures, encrypts and processes the card data, and operates the reader.

You hold the merchant relationship, confirm your PCI questionnaire with your acquirer, and manage your store network and physical readers.

How your Stripe connection is protected

  • Your Stripe secret key is encrypted at rest and never returned by the API. Settings screens show only whether a key is configured.

  • Every payment endpoint requires authentication and an active POS licence.

  • All communication with Stripe is over TLS.

  • Stripe webhooks are verified by signature and rejected if the signature is missing, invalid or stale.

  • Each Chorum tenant runs in its own container with its own database and its own Stripe credentials. One customer's key or payment records are never reachable from another.

  • Card details are never written to logs.

Refunds and manager approval

Card refunds reverse the original charge with Stripe rather than raising a credit note alone.

By default a refund needs a manager's number and PIN. You can change that under Settings, ERP, Point of Sale with Require manager approval for refunds. Leave it on if refunds should be supervised. Switch it off if your staff handle them routinely and the approval step gets in the way.

Using your existing Stripe connection

POS card payments use the same Stripe connection as invoice payments. One key, one mode, one webhook per tenant, configured under Settings, Integrations, Stripe Card. There is no separate POS payment setup.

The CARD tender stays disabled on the till until your Stripe integration is configured and a reader is linked to that register.

Offline payments

Card payments need a connection. Server-driven Stripe Terminal has no offline mode, so the till cannot take card payments while offline. Offline support is planned.