Skip to main content
Each disbursement payee picks one of six payment rails, and the rail decides which bank routing fields the form shows. At schedule time the platform validates the ACH amount threshold, the payee sequence, and that the payee amounts sum to the net proceeds. The form shows only the routing fields a method needs, but the routing fields themselves are not required at the write boundary.

The six payment rails

The DisbursementMethod enum holds six values. The order below is the display order in the multi-payee form.

The J$1,000,000 rule

Electronic transfers above J$1,000,000 must settle through RTGS, not ACH. This is a Bank of Jamaica rule for JamClear-RTGS. The platform enforces it at validation time, the moment you schedule. The check is strict: a payee using ACH is rejected only when its amount is strictly greater than J1,000,000.TheboundaryconstantisACHMAXCENTS=100000000cents,whichisexactlyJ1,000,000. The boundary constant is `ACH_MAX_CENTS = 100_000_000` cents, which is exactly J1,000,000.
A J1,000,000ACHpayeepasses.ApayeeofJ1,000,000 ACH payee passes. A payee of J1,000,000.01 or more on ACH is refused with a METHOD_THRESHOLD error that tells you to use RTGS. The comparison is amountCents > ACH_MAX_CENTS, so the exact J$1,000,000 figure is allowed on ACH; only amounts above it are forced onto RTGS.
The rule is per payee, not per disbursement. A loan that splits J1,500,000acrosstwoJ1,500,000 across two J750,000 ACH payees is fine, because each individual ACH leg is at or below the limit.

Routing fields by method

A payee carries non-secret routing fields. The account number is never one of them. The number is entered per disbursement and encrypted at rest. The routing fields are which bank, which branch, which account type, and where the payee is. The form shows only the fields the chosen method needs.
  • ACH and RTGS show bankCode, branchCode, routingNumber, and accountType, plus the bank picker.
  • Internal transfer shows accountType (the member’s share or savings account).
  • Wire shows swiftBic, bankCode, and routingNumber, plus the bank picker.
  • Cheque and manager’s cheque show a payeeAddress field, which is optional.
The accountType enum is exactly three values: CHEQUING, SAVINGS, SHARE.
Jamaica routes a domestic payment two different ways depending on the rail. ACH/JETS addresses a payment by bankCode plus branchCode. JamClear-RTGS addresses it by SWIFT/BIC. The platform models both.

The seeded bank directory

The platform ships a global bank directory of Bank of Jamaica supervised deposit-taking institutions. It is shared across every workspace, not workspace-scoped. The picker appears for ACH, RTGS, and wire, and only when the directory is non-empty. Pick a bank and one action fills its name and SWIFT/BIC onto the payee; it also fills the 3-digit ACH bank code once those codes are loaded (they ship NULL). The directory holds the supervised set: eight commercial banks, two building societies, one merchant bank, and the central bank. Every SWIFT/BIC above is cross-verified from independent sources. NCB’s BIC is JNCBJMKX, not the wrong NCBJJMKX that appears in some older directories. The 3-digit ACH bank code and 5-digit branch transit code are deliberately not shipped in the app. They live in a controlled operator file, the JETS Branch Code Listing, which the credit union loads from its ACH sponsor or directly from JETS. Branches open and close, so this file is loaded and refreshed from the system of record rather than hardcoded.
Citibank, N.A. (Jamaica) uses a passive BIC. USD wires route via a correspondent bank, Citibank N.A. New York (CITIUS33). Scotia Jamaica Building Society routes through Scotiabank rather than as a standalone target. Confirm any correspondent path with the bank before wiring live funds.