The design of PayGate has certain deliberate choices made. These are made with our teams previous experience and current business requirements.
PayGate treats amounts as strings (e.g.
USD 12.55) with a static currency and the numeric portion internally as an integer. This allows us to transmit values between languages and systems without much worry in floating point conversions.
We created a
Depository object which represents a financial instrument which can be debited and credited from (typically an account). This model is separate from
Customer and all other objects, but those often reference a
One reason we have separated the
Depository is to encrypt account numbers before they're persisted. This helps with compliance and regulations around protecting client data.
Depository also has validation for the routing number checksum which helps to prevent invalid data that can only cause bugs or errors.