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:
- 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.
- 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.
- 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 |
4028 | Portal SEN Credit | Immediate |
4029 | Portal Int Credit | Immediate |
4052 | Wire Credit | Immediate |
4054 | Foreign Wire Credit | Immediate |
4090 | Book Transfer Credit | Immediate |
4091 | FX Credit | Immediate |
4096 | FX Conversion FX Credit | Immediate |
4099 | Wire Return Credit | Immediate |
4290 | Euro Book Transfer Credit | Immediate |
9028 | Portal SEN DEBIT | Immediate |
9029 | Portal Int Debit | 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 |
9096 | FX Conversion FX 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 |
9290 | Euro Book Transfer 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 |