Reconciling and Simplifying Transaction History and Wire Queries

Early in our API development cycle we knew a transaction unique identifier would be a valuable add to our feature set and that it would be required in order poll and recognize new transactions intraday. We found a solution by creating a composite key in the form of a class object serialized to a json string, then converted to a bytearray and back to a base64string. The technical hoop jumping allows us to obfuscate data that is sensitive and makes it look cool. This is what is returned as the UniqueId in our GET History endpoint.

Unique ID is tied closely with Transaction types

We knew a good solution must be unique, permanent, immediate, and universal for every transaction types. In order to solve all 4 tenets we ended up having to use a little creativity and classify transactions into 3 types. On the plus side, all tenets including immediacy hold true for SEN transfers and wire transactions, which have crucial immediacy use cases for quickly scraping and reconciling returned records against subsequent history calls. There is also a group of transaction types for which the UniqueId only becomes permanent after that transaction is submitted and then runs through the next banking day close process (which occurs only on banking days at roughly 8:00 PM PST). As a result, we hold back in creating and displaying those values until they become static. To summarize, there are 3 total transaction types explained below:

  1. Immediate – these include SEN transfers, incoming wires, outgoing wires, and more. Like the name implies UniqueIds for these are available in the account history call immediately after a transaction is submitted.
  2. Delay – this group includes Debit and Credit card transactions amongst others which undergo changes to their metadata during the first close of banking day process after they are submitted. During this initial period you will notice we will return “Pending” as the UniqueId value. After the process run it will be replaced by a permanent usable UniqueId.
  3. Ignore – There is a third transaction code group which are pre-authorizations only. We do not return any value for Unique for these because, once a pre-authorization becomes permanent the transaction code migrates to a different Tran Code in the Immediate or Delay types.

Wire Data Connections (UniqueId vs PaymentId)

Important notes about these similar reference ids are; UniqueId will not go away for the foreseeable future. It is critical for the account/history endpoint as a way (intraday) to recognize new transactions when polling data throughout the day. Payment Id will become the method to reference and join new GET payment and GET account/history.

 

TranCode Specifications

TranCode TranCode Description UniqueId Type
20 Deposit Immediate
25 Transfer Credit Immediate
71 Insufficient Funds Charge Immediate
82 Transfer Debit Immediate
90 Check Immediate
4005 SEN TSFR CREDIT Immediate
4025 API Transfer Credit Immediate
4052 Wire Credit Immediate
4054 Foreign Wire Credit Immediate
4090 Book Transfer Credit Immediate
4091 FX Credit Immediate
4099 Wire Return Credit Immediate
9056 Wire Debit Immediate
9058 Foreign Wire Debit Immediate
9090 Book Transfer Debit Immediate
9062 Online Wire Debit Immediate
9064 Online Foreign Wire Debit Immediate
9071 Foreign Outgoing Wire Fee Immediate
9073 Domestic Outgoing Wire Fee Immediate
9091 Online Book Transfer Debit Immediate
9092 API Wire Debit Immediate
9093 API Foreign Wire Debit Immediate
9094 API Book Transfer Debit Immediate
9095 FX Wire Debit Immediate
9097 Wire Return Debit – Manual International Immediate
9098 Wire Return Debit – Manual Domestic Immediate
9099 Wire Return Debit Immediate
9082 API Transfer Debit Immediate
9084 SEN TSFR DEBIT Immediate
9162 Correspondent Domestic Wire Debit Immediate
9164 Correspondent Foreign Wire Debit Immediate
4028 Portal SEN Credit Immediate
9028 Portal SEN DEBIT Immediate
23 ATM Credit (authorization - temporary) Ignore
53 ATM Debit (authorization - temporary) Ignore
64 POS Debit (authorization - temporary) Ignore
10 Debit Reversal (Non-Printing) Delay
15 Interest Paid at Closing Delay
16 Closing Debit Delay
21 ACH Credit Delay
22 ATS Credit Delay
28 Telephone Transfer Deposit Delay
30 Credit Memo Delay
39 Interest Earned Delay
41 Debit Reversal (Printing) Delay
46 Mail / Lockbox Deposit Delay
51 Credit Reversal (Printing) Delay
52 Chargeback Delay
54 Branch Withdrawal Delay
56 Check Delay
60 Debit Memo Delay
61 Returned/Reprocessed Item Handling Fee Delay
68 Debit Accruals Delay
75 Service Charge Delay
76 Cashiers Check Delay
83 Bank Float Delay
84 Telephone Transfer Withdrawal Delay
86 ATS Debit Delay
89 ACH Debit Delay
92 Loan Payment Delay
103 Refund Outgoing Wire Fee Delay
111 Refund Returned/Reprocessed Item Fee Delay
154 Refund of Analysis Fee Delay
1075 Service Charge Credit Delay
2025 eBANKING EXTERNAL TRANSFER CREDIT Delay
2100 ACH Return Credit Delay
2190 ACH Offset for Originated Debits Delay
2191 Federal Benefit Payment Delay
2195 ACH Medical Payment Credit Delay
2202 Surcharge Rebates Credit Delay
2274 POS Purchase Return - PIN Delay
2275 POS Purchase Return - PIN Delay
2500 CD Interest Transfer to Internal DD/SV Delay
2504 Sweep Primary Credit Delay
2505 Sweep Secondary Credit Delay
2506 ODP Primary Credit (Cycle) Delay
2510 ZBA Primary Credit Delay
2511 ZBA Secondary Credit Delay
4020 Remote Deposit Delay
4030 Mobile Deposit Delay
5101 Stop Payment Fee Delay
5302 ACH Origination Fee Delay
5303 Office Deposit Fee Delay
7082 eBANKING EXTERNAL TRANSFER DEBIT Delay
7100 ACH Return Debit Delay
7189 Bill Pay Debit Delay
7190 ACH Offset for Originated Credits Delay
7214 ATM Withdrawal Delay
7215 ATM Withdrawal Delay
7255 POS Purchase With PIN Delay
7264 POS Purchase Non-PIN Delay
7265 POS Purchase Non-PIN Delay
7504 Sweep Primary Debit Delay
7505 Sweep Secondary Debit Delay
7506 ODP Secondary Debit (Cycle) Delay
7510 ZBA Primary Debit Delay
7511 ZBA Secondary Debit Delay
7511 ZBA Secondary Debit Delay