When there is an error transmitting or creating any of the integration messages or documents into Banner, the Banner APIs produce an error. The Interface logs the API error in the FZBEPRC and messages from Unimarket in the FZRCXML table. The Interface also triggers error emails to one or multiple email addresses defined in the FTVSDAT records (FZKEPRC-UM ERROR EMAIL-TO). The emails are sent using the Oracle UTL_MAIL function from the underlying Oracle database of Banner.
Sometimes, orders and invoices can make it to Banner but need adjusting. This document will focus on troubleshooting the common errors received during new customer setup, testing, and general usage, as well as instructions to reconcile between the two systems. It is intended to be used by functional users within Procurement and Accounts Payable Departments.
Interface Logs
When there is an error transmitting or creating any of the integration messages into Banner, the Banner APIs produce an error. The Interface logs the API activity, including error messages in two tables
- FZBEPRC Request log table – cXML messages from Unimarket to Interface
- FZRCXML Banner PO and Invoice API log table
Invoice Summary emails are also sent from the integration when an invoice is matched in Unimarket by passing the matching criteria to create the invoice in Banner. The integration configuration table FZREPRF and FTMSDAT records are used to trigger the emails and define which email addresses should receive the email.
FZREPRF_INV_EMAIL_SEND (Y/N)—If set to “Y,” the emails will be sent based on the FTMSDAT records (FZKEPRC-UM ERROR EMAIL-TO). The emails are sent using the Oracle UTL_MAIL function from Banner's underlying Oracle database.
API Error Email Sample for Invoice Summary:
Invoice Common Errors
Invoice cannot be created because the Purchase Order has not been posted
Sample
Subject from API Email:PROD: Error in InvoiceDetailRequest (3290680)
PO: PO163110
INVOICE: 56321237
API Error: Purchase Order cannot be invoiced.
Purchase Order has not been posted to the ledgers.
Action
This error occurs when the PO has not posted. If the PO is not posted, the PO cannot be invoiced. Check to see if any other POs are failing, to ensure that posting is running.
Look up the API error email for the PO, fix the PO, and then resend the invoice.
If you have access to the tables associated with Unimarket you can look in the FZRCXML log for the error that needs to be fixed. Once the PO has been fixed, the invoice message can be resent.
IF the posting process is running the customer has recently upgraded Oracle to version 19c which will need to have the below grant performed by their DBA in IT to give the permission to the FISHRS user to reprocess the invoice for a retrofit order. This will allow FISHRS to use DBMS_JOB functions from the FTMSDAT record for the “INV DELAY” when the invoice is reprocessed.
The issue with the Oracle 19c upgrade was the DBMS_Jobs not being a default with the DBMS_Scheduler being the Oracle default job. The solution was to grant the FISHER user permission to “create job” so that it can perform the DBMS_Job to reprocess an invoice if the PO wasn’t posted at the time it attempted to hit Banner.
Sample
PO: UP389903
INVOICE: UI394356
API Error: Purchase order not posted to ledgers. Invoice scheduled to be reprocessed.
Action
This error is expected and okay to ignore.
The reason this error occurs is on retrofit releases, both the release order and the invoice are sent to Banner at the exact same time. Often times, the invoice makes it there first. Resulting, in the error message received because the release order hasn't posted yet. The integration is set to resend the invoice message approximately 5 minutes later, to allow time for the release order to post, along with the invoice. Most customers have an email rule to filter this out since there can a lot of emails, depending upon how heavy the blanket order usage is. We suggest using the "Invoice scheduled to be reprocessed" portion of the error message, as the primary criteria for the email filtering. Since that tells you this invoice is going to be resent again and no action is needed.
Purchase Order has not been posted (Invoice scheduled to be reprocessed)
Sample
PO: PO163110
INVOICE: 56321237
API Error: Purchase Order cannot be invoiced.
Purchase Order has not been posted to the ledgers.
Invoice scheduled to be reprocessed
Action
This happens for Retrofit Invoices where the Retrofit Order is being created at the same time as the Invoice. Both are sent to Banner and the invoice may try to hit the PO before the PO has been posted.
Waiting for posting process, invoice will reprocess in # number of minutes defined in FTMSDAT. If you get several of these messages verify with finance that the posting process is running.
Stopping a reprocessing error for a specific invoice
Action
First, find the FZBEPRC_ID of the reprocessing job. Next identify the active scheduled job in the FISHRS schema:
SELECT * FROM USER_SCHEDULER_JOBS;
This select will pull fields JOB_NAME, JOB_ACTION
-- the JOB_NAME will look something like this: DBMS_JOB$_28225
-- the associated JOB_ACTION will look something like this: fzkeprc.p_request(273276,'EPUNIMARKET'); the first parameter of the p_request is the FZBEPRC_ID.
- Find the job_name with the fzkeprc.p_request parameter that matches the FZBEPRC_ID of the reprocessing job.
- Then use the job scheduler to drop the job by JOB_NAME or run an SQL that looks like this:
BEGIN
dbms_scheduler.drop_job(job_name => 'DBMS_JOB$_28225');
END;
/
Vendor Invoice Already Exists
Sample 1
Subject from API email: PROD: Error in request (FZBEPRC_ID): InvoiceDetailRequest (1728276)
API Error: This Vendor Invoice already exists for this vendor
Sample 2
Invoice IU017253/EP017512/02298183 already exists
Action
Invoice was resent manually from Unimarket to Banner because someone could not find the invoice in Banner. There may be another error with the invoice but when the invoice was initially sent to Banner, the Banner invoice (I#) was created but the other possible error caused it to not be completed.
OR
Vendor invoice number already exists in Banner. Unimarket will validate against invoices in Unimarket and not allow the same invoice number to be used for the same supplier. For any invoices that are in Banner only the invoice validation on the supplier invoice number is not done until the invoice hits Banner. AP will need to edit the Banner invoice to add a suffix to the vendor invoice number then complete the invoice in Banner.
Vendor FTMVEND Address Issue
Sample
Subject from API email: Error in request (FZBEPRC_ID): InvoiceDetailRequest (95869)
API Error: Invalid combination of address type and sequence for vendor.
Or
API Error: Purchase Order cannot be invoiced.
Purchase Order has not been posted to the ledgers.
Invalid combination of address type and sequence for vendor. (UNIINV)
Action
If the Address Type is missing, check the FTMVEND form for that Vendor. The Vendor Maintenance tab should have a default address type code and sequence listed for Procurement and Accounts Payable. After Banner has been updated, the Invoice in Unimarket will need to be resent.
Invoice line item amount exceeds purchase order line amount
Sample
Subject from API email: PROD: Error in InvoiceDetailRequest (287046)
*FB_INVOICE_ITEM*
Approved amount exceeds tolerance percent or amount on commodity item 1.
Action
Invoice Matching Tolerance in Unimarket is not the same or lower than the Banner invoice tolerances so the approved and matched invoice in Unimarket does not match per Banner tolerances.
Purchase order line item amount may have been changed manually between the time of creation by the Unimarket interface and invoice time. Whatever the cause the amounts don’t match and an invoice cannot be created. A manual invoice needs to be created by A/P to invoice this item.
Invoice Item Unit Price is $0.00
Sample
Subject from API email: PROD: Error in InvoiceDetailRequest (252589)
API Error: Approved unit price should be positive.
Action
The Banner API for invoices does not allow for a unit price of $0.00. This is used sometimes for free products or discounted products on an invoice from a supplier.
The Invoice will need to be edited in Banner to give the offending line item a Unit price of $0.0001. Banner allows for unit prices with 4 decimal places but rounds up the line subtotal to 2 decimal places. So depending on the line item quantity, a unit price of $0.0001 will still round up to a subtotal of $0.00.
There is a modification that has been done to recognize the $0.00 unit prices and change them to $0.0001 in the interface as the invoice is being created so contact the Unimarket customer community to see who is using that to see if it will be an option for your IT department to add to your Banner Interface.
Invoice for Split Lines (more than 2 splits) does not calculate correctly
Sample
*FB_INVOICE_ACCTG*
Approved Amount: ::Percent and Amount do not match
Action
There is a known API issue with Banner for invoices against order with a line item containing more than 2 split line accounts. The calculation that Banner does with the unit price X Quantity divided by the percentage of the split accounting does not equal the total of the line item subtotal. This is a known Banner API issue and the invoice will need to have manual intervention in Banner to ensure that the amounts of the split funding equal the line subtotal. The difference is usually a penny or two.
Shipping on Split Line Invoice with Additional Charge shipping amount error
Sample
*FB_INVOICE_ACCTG*
Additional Charge: Percent and Amount do not match
Action
Similar to the error invoice for split lines does not calculate issue. If you have your interface configured to add the shipping from an invoice to 1 line item in the Additional Charges field in Banner and the line item is split by 2 or more funding sources, the calculation that Banner does for the amount and split percentages may not match the initial amount which causes this error. Manual editing of the Additional Charge amounts need to be done in Banner to ensure that the amounts per split equal the initial shipping amount. Likely 1 funding source will need to pay an additional penny.
Unit Price Exceeds expected character count, $1,000,000 unit prices
Sample
Error in p_do_item_data:
Last called f_get_val(Item_UnitPrice)
ORA-06502: PL/SQL: numeric or value error: number precision too large
Action
This is an Oracle Error and due to the Interface not expecting unit prices as large as a million dollars with 7 characters. This can be changed with custom coding of the interface or reported to USNH for updates to the baseline code. This bug has been resolved in baseline code versions 4.0 and later with to correct data declaration for variable l_tot_item_tax_amt.
Contact Unimarket Support at support@unimarket.com for more information on modifying the interface.
Invoice Detail Tax exceeds the expected character count
Sample
Error in p_do_item_data:
Last called f_get_val(InvoiceDetailTax)
ORA-06502: PL/SQL: numeric or value error: number precision too large
Action
This is an Oracle Error and due to the Interface not expecting tax prices as large as a million dollars with 7 characters. This bug has been resolved in baseline code versions 4.0 and later with to correct data declaration for variable l_tot_item_tax_amt.
Contact Unimarket Support at support@unimarket.com for more information on modifying the interface.
PO is Closed and cannot be invoiced
Sample
API Error:
The item from the purchase order cannot be copied to the invoice as it is closed
Action
PO in Banner needs to be reopened and invoice resent from Unimarket.
Invoicing a PO from a different Fiscal Year
Sample
Subject of the API Email: PROD: Error in request (FZBEPRC_ID): InvoiceDetailRequest (1728350)
API Error: Purchase Order cannot be invoiced.
Encumbrance does not exist in the fiscal year in which the invoice transaction date falls.
Action
Manually change the transaction date on the invoice in Banner
Change the INV_TRANS_DATE in FZREPRF to “Y”
Crediting an Invoice with a past Fiscal year date on the credit invoice
Sample
API Error: Cannot create credit memo in prior year if the purchase order has rolled into the next year.
Action
Manually edit the invoice transaction date in Banner.
Change your FZREPRF_INV_TRANS_DATE Interface Configuration setting for the Invoice Trans Date to always set the invoice transaction date as the PO transaction date.
Purchase Order Canceled and cannot be invoiced
Sample
API Error: Purchase Order cannot be invoiced.
Purchase Order has been canceled
Action
PO was canceled in Banner so there would need to be an investigation with the buyer to find out why the PO was canceled and if the invoice should be paid.
Cancel the invoice if the PO was canceled intentionally and communicate to the supplier to have them credit the invoice on their books.
FUND Terminated and Invoice Failed to Post against PO
Sample
API Error: Fund code 551543 has been terminated as of 23-DEC-2016.
Action
This error generally happens with Grants or Sponsored Account Funds. PO was created when the Fund was active but the time between the PO being created and the invoice being matched and submitted for payment may have had the Fund activity date past and the Fund gets Terminated.
To resolve, the Grant or Fund Owner will need to give approval for the Fund to be reopened so that the invoice can be paid. Direct action in Banner required.
Vendor ID not Valid on the Invoice compared to the Order
Sample
API Error: Invalid value for vendor
Action
Issue is sometimes that the vendor ID needed to be changed after the PO was created. The vendor ID was not updated in Unimarket so the invoice referenced the initial (old) vendor ID but the PO number was carried over to the new vendor. The Banner API validated the PO reference number for Vendor B and the vendor ID representing vendor A which did not match.
Deadlock Detected
Sample
Error in p_get_po_data:
Last called f_get_val(Accounting_Charge)
ORA-00060: deadlock detected while waiting for resource
Action
This error is typically related to Banner receiving too many requests for processing at one time. To resolve the error:
-
Verify if the Invoice record has posted to FOIDOCH.
- If the Invoice does not appear in FOIDOCH, resend the Invoice message from Unimarket and confirm it posts correctly.
-
If the Invoice does appear in FOIDOCH, the status field is likely going to be Suspended or Incomplete..
- Delete the incomplete Invoice record from Banner (FAAINVE is likely the screen, but can’t confirm)
- Once the invoice record is deleted, resend the invoice message from Unimarket and confirm it posts correctly in FOIDOCH
Returning the Banner Invoice to Unimarket
Available to institutions on Banner Interface Code 4.5 or greater, the Reference Number on the Invoice page will populate with the Banner Invoice Number. In some cases, the web service message to Banner fails; causing Unimarket and Banner to not be in-sync. In the past, you could find this issue through an error email or a reconciliation. With this enhancement, you can simply look at the Invoices tab to determine if an error occurred when the invoice was passed to Banner.
When viewing the Invoices tab in Unimarket, the Reference field indicates the Banner Invoice number. If the Reference field is not populated, the Invoice is pending acceptance and Unimarket has not tried to send it.
Below you can see two invoices errored out based on the Reference Number having the format of “Error_”.
Error Messages in the Reference field have codes associated with them to help you and the Unimarket team troubleshoot the error. The API Error emails from the integration will provide the specifics of the error that occurs in Banner. Below is a list of the error messages you could potentially see in the Reference field, for specific API errors, the API error email is the place to look:
Error_10 - Error occurred when trying to build the Invoice Header Information. This error could occur if you try to invoice against a PO that did not post, or a supplier is not set up in Banner.
Error_20 - Error occurred in the Banner API to create invoice header. This error will rarely occur, but happens when the Banner API fails.
Error_30 - Invoice when Banner tries to create the Item/Accounting lines. When the invoice is created it needs to reference the PO lines, so if lines on the PO are closed in Banner then this error will occur.
Error_40 - Banner Invoice Complete API error. The error will rarely occur, and if it happens, contact technical support for assistance.
Clone of Prod to a DEV or PPRD Banner Instance
Sample
*ERROR* UM: INGR: Error In InvoiceDetailRequest - Wrong Deployment Mode "Production" for Banner instance INGR (INGR will be customer specific based on what they name their Banner Instance)
Action
We've typically seen this error happen during a clone of Prod to a DEV or PPRD Banner instance or if a customers Demo Connector has been pointed to their Production Banner environment.
Customer should check with their internal team to see if they know which Banner Environment INGR is? (Note that it may not be INGR but you will check on the name that is listed in your error). Also, customer should check with their team to see if they have done a clone of Prod recently.