US Bank Positive Pay File - How?

Does anyone use US Bank and have a positive pay file that works? We are having trouble figuring out how to create this.

Hi Lisa,

The last time I tried, I needed a license to do so - even though ACH came with the Electronic Interface.

Are you familiar with the EI files?

Worse case scenario, you can get close with a Dashboardā€¦

Mark W.

1 Like

We used an EI interface. Itā€™s a simple C# program that you can copy to a new directory and alter.

Have you worked with EI files on the server before?

1 Like

I have not worked with those yet.

Do you have access to get into your App Server directory structure?

We are in the Epicor cloud. I will need to check with our IT on this one.

Hi Lisa, Did you make any progress with this?

I think we used a report that we wrote to get close like @Mark_Wonsil said.

1 Like

Good morning, Doug -

Iā€™ve had to mess with these, and donā€™t see where the field mapping for PositivePay_Def.TmpCheck is defined. Our bank accepted the generic format, but Epicor half-a55ed the implementation and used the vendor name - NOT the remit-to name. Results was the bank rejecting most of our positive payā€¦

I tried simply replacing .name with VendorBankName and VendorBankNameOnAccount, and ended up with

'PositivePay_Generic.cs(102,29): error CS1061: ā€˜PositivePay_Def.TmpCheckā€™ does not contain a definition for ā€˜VendorBankNameā€™

I created a spreadsheet tool with VBA for the accounting team - works fine, but Iā€™d like to get the function back in the system.

Thanks for any guidance you can give!

1 Like

We created a BAQ to get the data, wrote post get list code to format it to the TXT file Associated needed, and saved said file using temppath. That is then auto uploaded via FTP and the file is deleted.

Depending on the circumstances you can fudge a pretty simple solution. They wanted a manual file uploaded we just made a scheduled BAQ run do it all for us

1 Like

Good work, Joshua -

I think my crabbiness is from seeing talented individuals having to work around fundamental base functionality that 1) doesn't work and 2) proper fixes are avoided with 'works as designed' or 'future consideration'. Companies with less-talented teams that invest coin in a license that says 'Positive Pay' should get a working positive pay application. No added work or consulting to 'fix' the base app.

Nice automation!

1 Like

This is what we ran into as well which is why we made a report. Cool solution @jgiese.wci

Does this work directly with US Bank? Are you able to share the BAQ directly with us if it is formatted for US Bank? Thanks for the tips; we will give this a try.

Joshua,

Can you explain (or point me to documentation) about the temppath and FTP upload. Are these features built into Epicor, or you performing these tasks on the server outside of Epicor?

No it was created for Associated Bank, but the process would be very similar.

Temp path is standard c# (Path.GetTempPath Method (System.IO) | Microsoft Learn) save the generated file with a name using something like a GUID just random unique, delete it when you are done or if there is a try/catch scenario. Just always delete the temp file somehow.

FTP upload I added Renci.SshNet to BPM externals folder and use that for the upload, but any sftp uploader should work. My post processing getlist on the baq ends up something like this.

// Ensure that we have records to export
if(ttResults.Count > 0)
{
  // Create the output file and write it
  string folder = @"C:\EpicorTemp\";
  string file = $"PositivePay_{DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss")}.txt";
  
  using(StreamWriter sw = new StreamWriter($"{folder}{file}"))
  {
    foreach(var x in ttResults)
    {
      sw.WriteLine($"{x.Calculated_RecordType}{x.Calculated_StatusCode}{x.Calculated_AccountNumberLenght}    {x.Calculated_BankNumber}          {x.Calculated_AccountNumber}{x.Calculated_CheckNum}{x.Calculated_CheckAmt}{x.Calculated_IssueDate}               ");
      sw.WriteLine($"{x.Calculated_AccountNumber}{x.Calculated_CheckNum}{x.CheckHed_Name}");
    }   
  }
  
  // Upload the file via SFTP to bank
  using (var sshcli = new SftpClient("sftpasbc.associatedbank.com", "username", @"password"))
  {
     sshcli.Connect();
     sshcli.UploadFile(new FileStream($@"{folder}{file}", FileMode.Open), $"/home/put/{file}");
  }
}

Thanks for the details. When you say that you ā€œadded Renci.SshNet to BPM externals folderā€, is it safe to assume that this requires access to the actual server?

Yes externals go in the BPM customization folder in inetpub. If you are on a shared tenant then I think you are boned as far as using that, in which case there may be ways of doing it through straight C# but not sure what all options are out there. I just chose the route of a quick library in my case.