v0.7.0
Version v0.7.0 of Paygate adds more support for return and incoming (COR/NOC) file processing along with admin methods for updating file transfer configuration without needing to restart paygate or update the underlying database directly.
Account numbers are encrypted in a migration as part of this release. Masked versions are stored alongside their encrypted form, but the cleartext values are not wiped.
Please read over the guide for account number encryption migration.
Also included are filename templates for merged ACH files uploaded to an ODFI. This allows banks with specific rules for files to be used with paygate.
KYC information is now optionally read for Originator
and Receiver
objects on creation. Paygate uses Moov Customers to perform validation and an OFAC check of this data.
The Moov Customers service will be used to register each Originator and Receiver (and their Depository) objects with any disclaimers required to be accepted prior to Transfer creation. OFAC searches for each customer are refreshed weekly by default with a config option to change the allowed staleness.
ADDITIONS
- internal/filetransfer: add HTTP routes for updating and deleting file transfer configs
- internal/filetransfer: allow synchronous waiting for flush routes (
/files/flush?wait
) - main: Add 'GET /version' admin endpoint
- api,client: add return codes to Depository and Transfer HTTP responses
- filetransfer: support reading a config file for routing and FTP/SFTP configuration
- filetransfer: update Depository and Originator/Receiver objects from incoming COR entries
- depositories: add admin route for overriding status
- micro-deposits: record metrics on initate and confirmation
- micro-deposits: prevent additional attempts once we've failed too many times
- customers: Refresh OFAC searches weekly by default
- filetransfer: reject file uploads if they're not whitelisted by IP address
IMPROVEMENTS
- micro-deposits: don't require x-user-id on admin route to read
- internal/filetransfer: override String() on ftp and sftp configs to hide passwords
- micro-deposits: debit the micro-deposit from the remote account when crediting
- micro-deposits: accumulate deposit amounts for a final withdraw
- files: reverse micro-deposit transactions in Accounts, if enabled
- internal/database: micro_deposits.return_code should default to an empty string
- internal/filetransfer: support additional NACHA return codes
- internal/filetransfer: pass through x-request-id and x-user-id HTTP headers
- all: wrap http.ResponseWriter with enhanced logging and responses
- all: close out db connections where they've been missed
BUG FIXES
- internal/filetransfer: fix timezone issues in CutoffTime tests
- depositories: always set proper content-type in HTTP routes
- micro-deposits: grow mysql file_id column to store '*-micro-deposit-verify' IDs
- common: Fixed an issue in Amount.Equal()
- api,client: require x-user-id HTTP header in OpenAPI spec
- all: check sql Row.Scan errors
- transfers: expand window for EffectiveEntryDate comparison against created_at
- internal/filetransfer: micro-deposit returns only need one (Receiver) Depository
- filetransfer: write filenames with their destination, not origin
- receivers: verify an updated DefaultDepository belongs to the user
- database: cleanup goroutines for metrics reporting on shutdown
BUILD
- update Docker images for moov-io dependencies
- cmd/server:
main()
method was moved to a separate package - internal: remove methods from public exported interface and split some code out into smaller packages
- build: flush (and wait) files in CI
- Update moov/fed Docker tag to v0.4.1
- build: update Copyright headers for 2020