Program Positive Pay file format

I am trying to modify the CS file for positive pay and I have everything the way I need it except for the amount. I cannot seem to format it with the two digit decimal. The first line not commented is the original, but the next few lines are what I have tried. I need to get the bankTotalAmt to be in the format of 0001234.50. So no $ sign, but I need to have the decimal. I can get the decimal with these options, but it does not move the numbers over so I end up with something like 0123450.00 when I really want 0001234.50

/* 36-45 10 Amount */
strRec.Append(formatFiller(bankTotalAmt.ToString(), “0”, 10, “R”));
/* strRec.Append(formatFiller(bankTotalAmt.ToString(“D”), “0”, 10, “R”)); */
/* strRec.Append(formatFiller(bankTotalAmt.ToString(“F2”), “0”, 10, “R”)); */
/* strRec.AppendFormat("{0:00000000.00}", ttCheck.BankTotalAmt); */

FYI, the file i am trying to edit is under Server\Erp\EI\PositivePay_Generic\PositivePay_Generic.cs
Also, not a programmer just using google so be gentle :smirk:

Since there doesn’t seem to be much out there in formatting Positive Pay, I thought I would just share mine for TCF. See my first post for location. Lesson learned, try out all the out of box versions first to see what gets you close. See my error in step 3.

  1. Make a copy of an existing Positive Pay folder and create a copy with your bank as at the end. This way upgrades should not take out your version. If they do, you at least have a backup.
  2. You will need to edit the names of the files within the folder too. There are a few references to these file names within the cs and proj files. A simple diffchecker will point them out quickly.
  3. Start messing with the format in the PositivePay_TCF.cs file. There were a few spots Epicor changed the amount to integer which was my problem in the first post, but after getting around that I used the floating point format to get my 2 digit decimal. It may have been easier to edit the pre-made Chase file since later I found it had the two digit decimal, but I was already into the generic.
  4. After that setup the electronic interface, assign it to the bank account and you should be good to shoot out a Positive Pay file.

It seems Epicor no longer allows the output to be a UNC as I get an invalid output error when I try to change the Output File location. When I browse it seems to only allow a server side save, which in turn saves to the EpicorData\Users\xxx directory. I guess I will need to do a little more research on that. (9.3 KB)

just an FYI… IN THE USA: unless something has changed recently, Positive Pay file formats may be different for each bank, and even for different branches of the same bank.



How do you access the positive pay file? We use the Bank of America format. However, the routing number does not show and we need that. Please advise.


Have you entered it on the Bank Remit To tab of the Supplier? It’s the Bank Identifier field.

1 Like

Its out routing number. The positive pay file requires our acct number, our routing number ,etc.
381032764826,021200339,281151,2733.00,11/13/2018,I,002500/A.DUIE PYLE INC.
acct num, routing , chk , amt , date , The “I” field is an indicator field and the vendor

That should be on your Bank Record, so you should be able to look it up there.

Mark W.

Doesn’t come out on the positive pay file

So you’re saying it IS on the Bank Record in Epicor and it doesn’t come out on the output file? If so, find the variable name that is linked to that position in the output, trace it back to where it’s assigned to see if it’s in the expected field.

I just took a look inside the stock Bank of America Positive Pay file (as of and it does have a variable for bank account number (_bankAcctNum) that gets used in the header record. However, it only has that because it passes the account number in via a parameter rather than including the entire bank account record.

The bank account id is also passed in so the database lookup is pretty simple using the Db and Session objects.
Something like (not tested, there may be typos):

var ourBank = (from row in Db.BankAcct where row.Company == Session.CompanyID && row.BankAcctID == _bankAcctID select row).FirstOrDefault();
string _bankRoutingNum = ourBank.BankRoutingNum.ToString();

You can then add that into the positive pay output (using the existing content as an example) to match your bank’s requirement.

1 Like

The folders will be under your appserver website under the …\Server\Erp\EI\

This is where you will see the built in BOA, Chase, etc. I copied one that was close and created a new folder for TCF and modified the PositivePay_TCF.cs file until it was in the format I wanted.

As Mark mentioned, the account number is in your bank record. You really should not need the routing, since you are sending it directly to the bank. Here is a new zip file of the one we actually use now and was approved by TCF. (14.8 KB)