Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk6 min

Money in a Parking App: Paise, Basis Points and a Ledger Postgres Won’t Let You Edit

How to store parking payments exactly in PostgreSQL: integer paise, basis-point rates, a single rounding boundary, and a ledger that rejects edits.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Store money as integer paise, store rates as integer basis points, round exactly once with a written policy, and record every payment as an append-only ledger row that PostgreSQL itself refuses to update or delete. That combination removes the most common money bugs in a parking app. Those bugs are drifting totals, mismatched receipts and “fixed” history nobody can explain. This guide shows how to build it and where the protection stops. It is an implementation guide, not tax or legal advice. Rounding rules, GST treatment and tariffs depend on your jurisdiction and charge type, so confirm them before you hard-code anything.

Why not floating point

Floating-point values are inexact, and the PostgreSQL manual recommends numeric when you need exact storage and calculation, which includes monetary amounts. Source: PostgreSQL 18, Numeric Types. Never use real, double precision, or a JavaScript or Python float for a balance or a posted charge.

As an Amazon Associate I earn from qualifying purchases.

Integer paise or numeric: choosing the storage type

Both options are exact. They differ in what they can represent and what they cost.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Axis Integer paise (bigint) numeric Floating point
Exactness Exact in whole paise Exact where possible Approximate
Fractional-paisa intermediates Cannot represent them without a separate rule Can represent decimal intermediates Represents them inexactly
Tie rounding in PostgreSQL Not applicable until you divide Ties round away from zero (2.5 becomes 3) Ties typically round to nearest even on most machines (2.5 becomes 2)
Speed Fast Documented as slower than integer or floating-point arithmetic Fast

All rows come from the PostgreSQL numeric types documentation. The manual says only that numeric is slower, with no figure, so measure your own workload before treating that as a reason to avoid it.

#1 Best Overall
Veemoon Telescopic Card Holder Rod, 2pcs Car Credit Card Holder Stick Vehicle Parking Swiping Pole Reacher Grabber Tool Contactless Payment - 300° Rotation - Parking, Vehicle Gas Station Pay, 25.4"
  • Essential toll booth reach extender --- struggling to reach the card machine? this telescopic parking rod acts as an extended arm, bridging the gap between your auto window and the payment terminal. it allows your parking pass or credit card swiftly without unbuckling your stretching dangerously, ensuring safe and contactless payment experience every time
  • Telescoping rod & secure grip --- engineered for convenience, the card holder stick extends up to [insert max length, 60cm] to easily reach distant readers. the head features a secure locking mechanism that firmly grips standard-sized cards (credit cards, parking tickets, gas cards), preventing them from falling into the gap while offering a smooth release when needed
  • Robust stainless steel build --- constructed from premium abs and a thickened stainless steel rod, this parking aid tool is lightweight yet sturdy enough to withstand daily use. the resilient material ensures the stick won't bend or break under pressure, providing a reliable solution for drivers with limited mobility, short stature, or those driving large suvs and trucks
  • Compact & weather-ready solution --- keep yourself dry and comfortable during bad weather. this parking card holder allows you to tap your card from a distance, minimizing the need to roll down your window fully in rain or snow. its slim, foldable design makes it easy to store in your console, glove box, or door pocket, keeping your car accessories organized and accessible
  • Practical 2-pack value set --- this bundle includes 2 pieces of telescoping grabber tools in sleek pure white and matte black. it is the perfect gift for drivers, allowing you to equip two vehicles or share one with a spouse or friend. whether for daily commuting, garage parking, or gated access, this set offers efficiency and ease for every trip

A practical rule: if every posted charge is a whole number of paise, keep posted amounts as bigint paise. They are easy to sum, compare and index. Use numeric for intermediate values that may carry fractions of a paisa. Remember that NUMERIC(p,s) rounds input to its declared scale, so a scale that is too small rounds silently.

Rupees are a display concern. Convert at the edge, at 100 paise per rupee, and never let a formatted string re-enter a calculation.

CREATE TABLE ledger_entry (
  entry_id        uuid PRIMARY KEY,
  parking_session uuid NOT NULL,
  payment_attempt uuid,
  provider_txn_id text,
  account         text NOT NULL,
  currency        char(3) NOT NULL DEFAULT 'INR',
  amount_paise    bigint NOT NULL,
  rate_bps        integer,
  rounding_policy text,
  reverses        uuid REFERENCES ledger_entry(entry_id),
  created_at      timestamptz NOT NULL DEFAULT now()
);

The rate_bps and rounding_policy columns keep the inputs and the rule next to the result, so any amount can be recomputed later.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Didiseaon Card Holder Stick Telescoping Plastic Parking Reachers Pair
  • Card Holder Stick Clip Opening: Insert the parking card into the clip at the rod end before presenting it to the reader. The clipped card sits away from the hand holding the stick
  • Telescoping Card Stick for Reach: Extend the telescoping rod to bring a held card toward a parking terminal. Adjust the rod before positioning the card at the beside the vehicle
  • Plastic Card Grabber for Parking Terminals: Direct the held card toward the parking reader with the plastic rod. The card-holding end it away from the hand while the vehicle remains stopped
  • Black White Card Holder Stick Pair: One black reacher and one white reacher are included. Keep the two separate when assigning a card-handling stick to each of the vehicles in a household
  • Card Stick for Parking Access: Use at a parking entrance or toll-payment point that accepts the held card. The rod presents the card during the stopped vehicle's access transaction

Rates in basis points

A basis point is one hundredth of one percent. Store rates as integers and write the convention down: a stored 100 means 1.00%, and 1800 means 18.00%. The 18 here is only an example of the scale. Nothing in this article asserts which rate applies to any parking fee or tax.

For an amount of A paise and a rate of B basis points, the unrounded result is A × B / 10,000 paise. This is an illustration of the arithmetic, not a mandated tax formula.

A worked example

Take a 4,750 paise fee at 1,850 bps (18.50%, chosen only to show a fraction). The product is 4,750 × 1,850 = 8,787,500. Dividing by 10,000 gives 878.75 paise, so the unrounded charge is a fraction of a paisa. Round-half-up gives 879. Floor gives 878. Pick one, because the answer differs by a paisa and across millions of rows that adds up.

Rank #3
SOLUSTRE Garage Parking Aid 2 Pack Plastic Card Extender for Access
  • Effortless parking: the telescoping mechanism the parking process, saving you time and effort
  • Multilocation compatibility: suitable for use in residential complexes, office buildings, and parking garages
  • Sturdy construction: crafted from plastic, allowing longlasting reliability and performance
  • Simple to use: no technical expertise needed, making it convenient for anyone to operate
  • Portable design: its compact and lightweight design allows for easy transportation and use

With integers, do the multiplication first and divide last. In SQL, bigint division truncates, so rounding half-up needs an explicit step:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
-- round half up for non-negative values
SELECT (amount_paise * rate_bps + 5000) / 10000 AS charge_paise;

-- or via numeric, rounding ties away from zero
SELECT round(amount_paise::numeric * rate_bps / 10000) AS charge_paise;

Negative values (refunds, reversals) behave differently under truncating integer division, so define the policy for them explicitly, or compute the magnitude and apply the sign afterward.

One rounding boundary

Define exactly one place where fractional paise become whole paise, and keep it out of the display layer. Rules to follow:

Rank #4
Parking Block, Folding Parking Block, Separable Parking Bollard Interceptor, 50-48 cm Terminal, Red (Yellow)
  • ☆10mm spring steel middle, automatic return, reducing the risk of damage
  • ☆Thick products, thick base and no serious damage
  • ☆The elbow can be formed once without welding, which greatly improves the bearing pressure and impact resistance, ideal for parking and driveways
  • ☆Mark your parking spot by leaving it locked to prevent someone else from driving your car and improve property security.
  • ☆This wheel locator is suitable for garages, large parking lots or outdoor parking lots to provide adequate protection for your vehicle and your personal safety.
  • Compute with exact arithmetic (integers, or numeric for fractions) all the way to that point.
  • Round once, per a named policy such as half-up, half-even or floor. Your legal or finance owner should approve it. This article does not establish a required rule.
  • Post the rounded result, together with the inputs and the policy name or version.
  • Never round, then re-derive and round again, for example when a total is computed from line items and again from the subtotal.

Do not let the application and the database round differently. PostgreSQL’s numeric rounds ties away from zero, while floating-point types typically round ties to nearest even (documented example: 2.5 gives 3 as numeric, 2 as double precision). Some language runtimes default to half-even as well. If two services round the same value, test them against the same fixtures that include exact ties like 0.5, 1.5 and 2.5 paise.

An append-only ledger

Model each accepted event as new rows, never as edits. Each row carries a stable event ID and references the parking session, payment attempt, provider transaction, currency, amount, account and timestamps. For a double-entry design, each transaction posts debits and credits that sum to zero, and you check this inside the same database transaction. A mistake is corrected by posting a reversal (the reverses column above) and then the correct entry. History stays intact, so the correction is itself visible. These are design practices, not legal requirements.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Two further details help in a payments setting:

  • Put a unique constraint on the provider transaction ID, scoped appropriately, so a retried webhook cannot post twice.
  • Keep current balances as derived values (a view, or a summary table fed by inserts), never as a hand-edited column.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Making PostgreSQL refuse edits

Triggers can fire on INSERT, UPDATE, DELETE and TRUNCATE. They run in the same transaction as the triggering statement, so if the trigger raises an error, the statement’s effects roll back. See Overview of Trigger Behavior and CREATE TRIGGER.

Best Value
CHILDWEET 2pcs Parking Helper Telescoping Card Holder Stick for Cars
  • Versatile use: ideal for various locations such as residential areas, offices, and parking lots, making it a versatile tool,extension rod,hard plastic Badge holder
  • Timesaving: the telescoping function makes parking quick and efficient, saving valuable time,id card holder,badge holder
  • Simple to use: no technical expertise needed, making it convenient for anyone to operate,temporary parking card holder,parking card stick
  • Robust build: made of sturdy plastic, allowing the rod card holder can withstand frequent use,small telescoping rod for automotive, stick
  • Lightweight and compact: easily portable due to its compact design and light weight, making it convenient to carry,telescoping arm parking,telescopic auxiliary rod
CREATE FUNCTION ledger_reject_change() RETURNS trigger
LANGUAGE plpgsql AS $$
BEGIN
  RAISE EXCEPTION 'ledger_entry is append-only (% blocked)', TG_OP;
END;
$$;

CREATE TRIGGER ledger_no_update_delete
  BEFORE UPDATE OR DELETE ON ledger_entry
  FOR EACH ROW EXECUTE FUNCTION ledger_reject_change();

CREATE TRIGGER ledger_no_truncate
  BEFORE TRUNCATE ON ledger_entry
  FOR EACH STATEMENT EXECUTE FUNCTION ledger_reject_change();

Row-level triggers do not fire for TRUNCATE, which is why it gets its own statement-level trigger. Test both: attempt an UPDATE, a DELETE and a TRUNCATE as the application role and confirm that each fails and leaves the data unchanged.

Where the guarantee ends

A trigger rejects unauthorized changes. It is not a defense against someone who can drop or disable it, or who owns the table. The following is an architectural inference from how triggers work, not a statement from the PostgreSQL manual. Layer the controls, since each one covers a different failure:

  • Privileges: the application role gets INSERT and SELECT only, with no UPDATE, DELETE or TRUNCATE. Prefer exposing a narrow insert function over raw table access.
  • Ownership: a separate migration or owner role holds schema rights, and the application never connects as it.
  • Triggers: catch mistakes and bugs from roles that do have write rights, and make intent explicit in the schema.
  • Reversals: handle legitimate corrections without rewriting history.
  • Audited operational access, backups and reconciliation: detect or recover from privileged mistakes. Reconcile your ledger regularly against payment provider statements.

What to confirm before launch

This design does not settle your operator, payment provider, tariff, tax, jurisdiction or settlement flow. Confirm with the relevant authorities and your provider the applicable tax treatment, the required rounding rule, settlement timing, and where payment data must reside.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Quick Recap

Bestseller No. 3
SOLUSTRE Garage Parking Aid 2 Pack Plastic Card Extender for Access
SOLUSTRE Garage Parking Aid 2 Pack Plastic Card Extender for Access
Simple to use: no technical expertise needed, making it convenient for anyone to operate; Portable design: its compact and lightweight design allows for easy transportation and use
$13.79
Bestseller No. 4
Parking Block, Folding Parking Block, Separable Parking Bollard Interceptor, 50-48 cm Terminal, Red (Yellow)
Parking Block, Folding Parking Block, Separable Parking Bollard Interceptor, 50-48 cm Terminal, Red (Yellow)
☆10mm spring steel middle, automatic return, reducing the risk of damage; ☆Thick products, thick base and no serious damage
$237.77

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.