{   "comment": "Fiserv CCN Positive Pay Input File Format",
 
    "type": "PPI", "name": "Positive Pay Input File", "format": "fixed", "recordLength": 458, "suffixes": [ "ppi", "txt" ],
    "description": "Positive Pay Input file (from ARP/SMS) used by Fiserv's Commercial Client Navigator (CCN).",
 
    "records": [ 
        { "type": "Header", "name": "Header Record", "signature": "^[0-9]{15}00000",
          "description": "Positive Pay Input - Header record.  Contains account info, contact info, control totals, and cutoff times",         
          "fields": [ [ "Control Number",         14, "R", "N", "",
                            "Control number generated by ARP/SMS. Used in SMS as the unique key of the file."],
                      [ "Control Sequence",        1, "R", "N", "",
                            "Control Sequence generated by ARP/SMS, is part of the unique key of the file." ],
                      [ "Record Type",             5, "R", "N", "",
                            "Record type - Zero is for header." ],
                      [ "Bank",                    7, "R", "N", "",
                            "ARP/SMS Bank ID / FI ID.  Usually the last 3 digits: 000201, 000202, etc." ],
                      [ "Account",                20, "R", "AN", "",
                            "Customer account number" ],
                      [ "Account Count",           5, "O", "N", "",
                            "Customer Account Count (can be spaces).  Number of positive pay exceptions on the account." ],
                      [ "Account Amount",         17, "R", "N", "",
                            "Customer Account Amount This holds the total of the positive pay exception amount on the account. This value is in cents. Example: 000052550." ],
                      [ "Customer Email Address", 54, "O", "", "",
                            "Customer contact email address." ],
                      [ "Bank Email Address",     54, "O", "", "",
                            "Bank contact email address." ],
                      [ "Cutoff Time",             5, "R", "", "",
                            "Cutoff time for ARP/SMS; the time that the bank expects to get decisions back." ],
                      [ "Time Zone",               1, "R", "A|P|M|C|E", "",
                            "Timezone for the header and Cutoff Time: A (Alaska), P (PST), M (MST), C (CST), E (EST).", [],
                            [ "A = Alaska", "P = PST", "M = MST", "C = CST", "E = EST" ]],
                      [ "FID",                     3, "O", "", "",
                            "Not used for decisioning." ],    
                      [ "DDA Transaction Code",    3, "O", "", "",
                            "Not used for decisioning." ],   
                      [ "Filler 1",               20, "O", "", "",
                            "Reserved for possible future use." ],    
                      [ "Status",                  1, "O", "", "",
                            "Not used for decisioning.  Used only internally to ARP/SMS. L during file creation, then R when the record is re-written with counts and amount." ],   
                      [ "Load Timestamp",         14, "R", "N", "",
                            "Date/time that the record was written. YYYYMMDDHHMMSS." ],   
                      [ "Process Timestamp",      14, "R", "N", "",
                            "Date/time that the record was updated after writing all the detail records. YYYYMMDDHHMMSS." ], 
                      [ "Delivery Method",         1, "O", "A", "",
                            "Delivery method.  Valid values are F (file), T (transmission), E (electronic), C (cash management system). Not used for decisioning." ],    
                      [ "Team Number",            12, "O", "", "",
                            "Not used for decisioning.  Can be spaces." ],
                      [ "Service Type",            4, "O", "", "",
                            "Used for Positive Pay Accelerator (PPA) - SDND, NDND, SDSD, STD." ],
                      [ "Filler 2",              203, "O", "", "",
                            "No validation done." ] ]                
        },        
        { "type": "Detail", "parent": "Header", "name": "Detail Record", "signature": "^[0-9]{15}(?!00000)",
          "description": "Positive Pay Input - Detail record.  Contains a single positive pay exception that requires a decision from Fiserv's Commercial Client Navigator (CCN).",           
          "fields": [ [ "Control Number",         14, "R", "N", "",
                            "Control number generated by ARP/SMS. Used in SMS as the unique key of the file."],
                      [ "Control Sequence",        1, "R", "N", "",
                            "Control Sequence generated by ARP/SMS, is part of the unique key of the file." ],
                      [ "Record Type",             5, "R", "N", "",
                            "Record type, 1 - 99999 for detail records.  Count of records in the file." ],
                      [ "Check Serial Number",    13, "R", "N", "",
                             "Check serial number.  Zeroes to 9999999999999." ],
                      [ "Amount",                 13, "R", "N", "",
                             "Amount, decimal, in cents." ],
                      [ "Effective Date",          7, "R", "CYYMMDD", "",
                             "Effective Date, in CYYMMDD format." ],  
                      [ "CPCS Batch Sequence",    18, "R", "N", "",
                             "Batch sequence number that is stamped on the back of the check." ],   
                      [ "Online Positive Pay Reason", 2, "O", "", "",
                             "Online Positve Pay Reason code, not used for decisioning." ],  
                      [ "Echeck Indicator",        1, "R", "AN", "",
                             "E for e-check items." ],
                      [ "Positive Pay Reason",     1, "R", "$|P|D|I|A|S|C|Z|E|B|R|>|<|L|M|V|N|U", "",
                             "Positive Pay Reason Code.", [],
                             [ "$ = > MAX $ AMT", "P = PD, NOT ISS", "D = DUPL PD ITEM", "I = INVALID SER#",
                                "A = $ AMT MISMATCH", "S = STOP ON FILE", "C = CANCEL ON FILE", "Z = ZERO $ AMT",
                                "E = STALE DATED IS", "B = $ < MIN $ AMT", "R = < OR > SER RANG", "> = > DATE RANGE",
                                "< = < DATE RANGE", "L = E-CHECK", "M = PAYEE MISMATCH", "V = PAYEE VERIFY",
                                "N = PAYEE NOT AVAIL", "U = REVERSE POS PAY" ]],
                      [ "Filler 1",              153, "O", "", "",
                            "Reserved for possible future use." ],  
                      [ "Issue Date",              8, "O", "", "",
                             "Issue Date, optional.  If present, in YYYYMMDD format." ],
                      [ "Issue Payee",            80, "O", "", "",
                             "Payee name on the issue." ],
                      [ "Issue Amount",           13, "O", "N", "",
                             "Issue Amount in cents." ],
                      [ "Paid Payee",             80, "O", "", "",
                             "Paid payee name." ],
                      [ "Slippage Indicator",      1, "O", "", "",
                             "Used for Positive Pay Accelerator (PPA).  Not validated for decisioning." ],
                      [ "Filler 2",               48, "O", "", "",
                            "Reserved for possible future use." ]                     
                    ]  
        }       
    ]
}