13 Managing Suspended Payments

This chapter provides an overview of how Oracle Communications Billing and Revenue Management (BRM) handles payment suspense operations performed using Payment Center. For information on how to use Payment Center, see the Payment Center Help.

About Payment Center

You use Payment Center to apply suspended payments to customer accounts and to suspend payments that have been posted incorrectly. You can process only one suspended payment at a time, and you need either a valid account number or bill number to associate with the suspended payment.


Payment Center does not support branded databases or multischema environments.


Payment Center is packaged in the PaymentTool.zip file and shares the same installation. To install Payment Center, download and install Payment Tool. To uninstall Payment Center, uninstall Payment Tool.

You can perform the following tasks by using Payment Center:

  • Search for accounts, bills, and payments.

  • Apply suspended payments to customer accounts.

  • Divide one suspended payment into multiple distributed payments, and apply each one to a different customer account.

  • Allocate suspended payments to bills and bill items in one or more accounts.

  • Suspend payments that have been posted in customer accounts.

  • Remove unallocatable payments from the payment suspense account.

For more information, see the Payment Center Help.

How BRM Processes Suspended Payments

Payment Center calls the following opcodes to process suspended payments:

  • The PCM_OP_PYMT_VALIDATE_PAYMENT opcode to perform the validation.

  • The PCM_OP_PYMT_MBI_DISTRIBUTE opcode to distribute the \payment to multiple bill units if the payment is made to an account with multiple bill units.

  • The PCM_OP_PYMT_SELECT_ITEMS opcode to prepare the item list for allocation.

  • The PCM_OP_PYMT_POL_OVERPAYMENT and PCM_OP_PYMT_POL_UNDERPAYMENT policy opcode if the payment amount is more or less than the sum of the total due of all the open items selected by PCM_OP_PYMT_SELECT_ITEMS.

  • The PCM_OP_PYMT_RECYCLE_PAYMENT opcode to reverse the suspended payment and create the recycled payment in the accounts.

For more information, see "Configuring Payment Suspense Manager".

About Searching for Payments

You use Payment Center to search for suspended payments and payments that have been posted in customer accounts. Depending on how the payment analyst specifies the search, BRM looks for the following types of payments:

  • Suspended payments: This search finds payments that entered BRM as suspended and payments that were made to customer accounts and later suspended. Payment analysts typically use this type of search when they want to find suspended payments to distribute to customer accounts.

  • All payments: This search finds suspended payments and active payments made to customer accounts. Payment analysts can use this type of search if they are also looking for payments that have been allocated to customer accounts but that must be placed in suspense instead. You can narrow this type of search to include only payments that have a specific payment type such as cash or check.

After it has the list of payments, Payment Center retrieves information on the state of any suspended payments returned by the search. It does so by performing a second search, this time for payments that have never been reversed. This search finds states for all payments that were generated from a suspended payment, such as distributed payments, but it does not retrieve payment states for payments that are no longer active.

The types of payments returned in these searches include:

  • Partially distributed suspended payments.

  • Fully distributed suspended payments (only if the payment analyst specifies Include Fully Allocated Payment).

  • Suspended payments that were removed from the suspense account as unallocatable.

  • Payments that were reversed using Payment Tool.

About Payment Center Validation

Before a distribution list from Payment Center is submitted to BRM, it is validated. You can choose how to validate payments that you submit through Payment Center. Payment Center can validate payments in one of two ways:

  • Automatically: When you enter information, the data is validated as soon as you move your focus to the next field. If errors are detected, you must correct them before continuing.

    If a payment is an overpayment or underpayment, Payment Center notifies you and enables you to change the allocated amount. During allocation, you will also be notified if you underallocate a payment. You are prevented from overallocating payments.

    Field-level validation is the default for Payment Center. If you do not want to use field-level validation, you can turn it off and validate the information manually after entering any amount of data.

  • Manually: After you enter any amount of data, you click Validate. Payment Center then uses the Status column in the Allocate Payment window to display the validation result of each allocation. It also indicates whether the allocation was an overpayment or an underpayment so you can correct the payment amount.

Although allocation is on a per-account basis, validation occurs for the entire transaction; if one of the distributed payments fails, the entire distribution list will fail. Therefore, when performing a distributed payment allocation, it is better to use the default (field-level validation) so you do not encounter problems after entering a large amount of payment data.

Payment Center populates certain lists depending on the validation level you choose. If field-level validation is enabled during account-level allocation, the open bills in an account are automatically listed in the user interface as you enter information. If field-level validation is disabled, you must manually enter each bill number for a particular account. The open bills for an account are not populated in the Bill Number column.

If one or more payments fail validation, the suspended payment is returned to its preallocation state. In effect, the entire result of the payment distribution list is undone. You must correct the problems and the list must pass validation before you can submit the distributed payments. For information about payment validation, see the discussion about managing payments in the BRM documentation. For information on how BRM validates suspended payments, see the discussion about payment processing implementation and customization in the BRM documentation.

If you determine that one or more distributed payments from the same list were submitted incorrectly, you can resuspend them at any time. And, if you do not know how to fully allocate a suspended payment to a distribution list, you can leave an amount in suspense. You can continue allocating the payment at any time.

About Allocating Suspended Payments

You allocate suspended payments from the Payment Allocation window.

You can allocate a payment based on the account number only, the bill number only, or either the account number or bill number, depending on the information available in the payment. The allocation method you choose configures the columns in the Payment Allocation window. This makes entering payment information easier, the column for the chosen method is enabled, and the column for the method that is not chosen is disabled. For example:

  • If you choose Account Number, the bill number field is disabled so that you can tab directly from the Account Number column to the Allocate column across each row.

  • If you choose Bill Number, the account number field is disabled, so that you can tab directly from the Bill Number column to the Allocate column across each row.

  • If you choose Account Number or Bill Number, both columns are enabled. If you enter information in only one of the columns, you must tab through the other column before you can enter the amount in the Allocate column.


    You can change the allocation method on a per-row basis; your entire distribution list does not have to use the same method.

If you apply a payment to specific bills or items in an account, BRM retrieves all open bills and all open bill items. The results are displayed in the allocation window so you can assign an amount to each account, bill, or item. If you perform an item-level allocation after having entered a bill number for the payment, the item list will only contain open items for that bill. If you perform an item-level allocation with the account number entered only, the item list will contain all open items for that account.

About Deferred Payment Allocation

By default, when a payment is submitted to BRM, the BRM business policies either allocate the payment automatically or post it to the account without being allocated to specific bills or bill items. Unallocated payments remain as a credit on the account and can be allocated later by using Customer Center.

For an account with multiple bill units, when an account-level payment is submitted with deferred allocation flag set, the payment is distributed to multiple bill units but remains unallocated.

Payment Center provides both options when you submit payments by using the account number only. If you choose to have BRM allocate the payment automatically and the allocated amount is less than the amount due, you will have the option of manually allocating the payment to specific bills and items.

You can restrict Payment Center from providing the defer allocation option by setting the Allocation Window preferences in Payment Center. For instructions on how to allocate payments and set Payment Center preferences, see the Payment Center Help. See "About Payments" for more information on how BRM allocates payments.

About Overallocations and Underallocations

Overallocation occurs when the sum of distributed payment amounts is greater than the amount of the suspended payment. Underallocation occurs when the sum of distributed payment amounts is less than the amount of the suspended payment.

Overallocation is not valid in BRM, but you can configure BRM to handle underallocations. For example, if an underallocation occurs, BRM can cancel the entire allocation operation or leave the remaining amount in suspense.

In Payment Center, if you overallocate a suspended payment to a bill or item in an account, you are required to change the allocation amount to be less than or equal to the amount due on the bill or item, respectively. If you underallocate a suspended payment, you are warned that the payment has been underallocated and are prompted to fix the allocation. For example, if a suspended payment is $100, and you divide it into three $25 distributed payments, the result is a $25 underallocation.

If this occurs, you can use Payment Center to correct the payment allocation any of the following ways:

  • Cancel the entire payment allocation and leave the suspended payment in its previous state.

  • Modify the total amount that was allocated in each distributed payment.

  • Add an account to the payment distribution list, and allocate the remaining amount to that account.

  • Leave the remaining amount in the suspended payment.

For more information on allocating payments, see the Payment Center Help.

About Allocating Suspended Payments to Multiple Bill Units

If an account has multiple bill units, you can allocate a suspended payment to specific bill units of that account.

After a suspended payment is validated for an account having multiple bill units, it can have any of the following statuses:

  • Validated (with MBI Distribution): UnderPayment: If the payment-allocated amount is less than the actual bill amount.

  • Validated (with MBI Distribution): OverPayment: If the payment-allocated amount is more than the actual bill amount.

  • Validated (with MBI Distribution): Exact Match: If the payment-allocated amount is the same as the actual bill amount.

You can allocate a payment to multiple bill units only if:

  • The suspended payment is allocated by specifying the account number.

  • The validation status is Validated (with MBI Distribution): UnderPayment.

Payment Center displays the default payment distribution to multiple bill units. The default payment distribution is defined in your business policy. You can manually allocate the payment that overrides the default distribution. After manual allocation, revalidate the payment.

  • For a parent account having multiple bill units, you can allocate the payment to different bill units of the parent account and its child accounts.

  • For a non-paying child account having multiple bill units, you can allocate the payment to different bill units of the child account.

  • For accounts with multiple bill units, you can allocate the suspended payment that has been partially allocated to multiple bill units of that account.

For more information on how to allocate account-level payments to multiple bill units, see the Payment Center Help.

Working with Overpayments and Underpayments

As you enter data in Payment Center to allocate a suspended payment to one or more accounts, you are warned if a row contains an underpayment or an overpayment. If there is an overpayment, you can:

  • Apply the overpayment to the account, leaving the excess amount unallocated in the account.

  • Change the distributed payment amount to equal the account balance.

  • Cancel the entire distributed payment allocation, leaving the suspended payment in its original state.

If there is an underpayment, you can:

  • Change the distributed payment amount to equal the account balance.

  • Accept the underpayment, and continue with the allocation.

  • Cancel the entire distributed payment allocation, leaving the suspended payment in its original state.

If an underpayment occurs during item-level allocation, you can either accept the item allocation list suggested by BRM or reject the list and manually select which items receive the payment.

When you submit the payment batch, BRM processes the payments and identifies the items to which the payment is applied. If you allowed the underpayment or overpayment in Payment Center, BRM allocates overpayments and underpayments of funds according to the payment analyst's instructions.

If the payment amount equals the amount due, BRM closes each bill and bill item. Payment amounts that do not equal the amount due for the bill are underpayments or overpayments, and your business policies should be set up to handle both these conditions. For example, a $35 payment is received for an unpaid $30 bill. When the payment analyst enters the payment and indicates the bill number, the bill is closed automatically and the $5 overpayment is either allocated to another open bill or is recorded at the account level, according to your business policies.


Depending on your business policies, overpayments may require manual allocation.

For information on how to customize BRM to handle overpayments and underpayments, see the discussion about payment processing implementation and customization in the BRM documentation.

Configuring Payment Center for Custom Payment Methods

If you create custom payment methods for your BRM system, you must customize Payment Center to handle them. This overview procedure describes how to create custom classes and fields and enable Payment Center to handle them.


Before customizing your payment functionality, you should be familiar with the Java PCM and the BRM Storable Class Editor, which you use to create custom classes and fields. For background information on creating custom classes and fields, see "Creating Client Applications by Using Java PCM" and "Creating Custom Fields and Storable Classes" in BRM Developer's Guide. For information on the Storable Class Editor, see the Storable Class Editor Help.
  1. Complete the following tasks by using Storable Class Editor:

    1. Create your storable classes and fields in the Java PCM package.

    2. Create source files for your custom fields.


      Storable Class Editor creates a C header file called cust_flds.h, a Java properties file called InfranetPropertiesAdditions.properties, and a Java source file for each custom field.
  2. In the directory in which Storable Class Editor created the Java source files, compile the source files:

    javac -d . *.java
  3. Package the new class files into a JAR file. For example:

    jar cvf customfields.jar *.class
  4. Copy the contents of the InfranetPropertiesAdditions.properties file and paste it into the Payment Center Infranet.properties file. By default, this file is located in the C:\Program Files\Portal Software\PaymentCtr\PaymentCenter directory.

  5. Append the location of the JAR file to the PAYCTRCP environment variable path. For example:

    ;.;C:\Program Files\Portal Software\PaymentCtr\customfields.jar;

Customizing the Date Format for Payment Center

You can customize the format of the date displayed in the Payment Search dialog box, the Undo Allocation dialog box, and the Payment Results screen in Payment Center.

To customize the date format for Payment Center:

  1. Open the PaymentCenter_Home/paymentcenter.properties file in a text editor, where PaymentCenter_Home is the directory in which you installed Payment Center.


    If the paymentcenter.properties file does not exist, you must create it manually.
  2. Add the following entry:


    where format is one of the following:

    • dd/MM/yyyy

    • dd/MMM/yyyy

    • dd.MMMM.yyyy

      where MMMM is the spelled-out name of the month (for example, September).

    • yyyy/dd/MM

    • MMM/dd/yyyy

    • MM/dd/yyyy

    The default is MM/dd/yyyy.

    For example, if you set DefaultDateFormat=dd/MM/yyyy, Payment Center displays June 30, 2012 as 30/06/2012.

  3. Save and close the file.

Improved Performance of Searches for Payment Events in Payment Center

By default, Payment Center retrieves five payment events for each step of a search. You can improve Payment Center's performance of payment event searches by configuring the paymentsearch.stepsize entry in the paymentcenter.properties configuration file.

To configure the step search size:

  1. Open the Payment_Center_Home/paymentcenter.properties file in a text editor, where Payment_Center_Home is the directory in which Payment Center is installed.

  2. Set the paymentsearch.stepsize entry to a value based on the number of events in your system and your client/server memory configuration. For example:

  3. Save the file.