> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vindicia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vindicia Retain Methods

The core Retain Methods include the following:

* `billTransactions`—(required) submit failed transactions to Retain for processing
* `fetchBillingResults`— (required) retrieve final results of Retain processing
* `refundTransactions`— (optional) cancel/refund a transaction submitted to Retain
* `addPaymentMethods` - (optional) add additional payment methods to retries for failed transactions

Implementations of core Retain Methods are evaluated during merchant Retain Certification. Refer to the respective Use Cases for the required implementation for Certification.

See the [Transaction Data Members](transaction_data_members) and the [Payment Method Data Members](payment_method_data_members) for information about the values passed to and returned by the Retain Methods.

## Example Programs Calling Vindicia Retain Methods

Example programs in C#, Java, PHP and Python that demonstrate using the Retain Methods are available on [github](https://github.com/Vindicia/CashBoxAPISamples/tree/master/Select). An example in [Ruby](https://github.com/dissolve/CashBoxAPISamples/tree/master/Select/Ruby) is also available on github.

## Pseudo Code for Calling Vindicia Retain Methods

Although pseudo code for calling Vindicia Retain Methods is provided with the Methods described below, this API Guide is primarily a reference, and as such is more concerned with describing the inputs and outputs of the Methods than with how they should be used in an application. For more information about what Retain Certification expects in your implementation, follow the links to the associated Use Case in each of the required methods.

The following table summarizes the methods for Vindicia Retain.

| Method | Description |
| - | - |
| `billTransactions` (Required to implement use case [5-8-01](/portal/retainUseCases/topics/5801_submitFailedTransactions): **Submit Failed Transactions to Retain for Recovery**) | Submit transactions to Vindicia Retain for processing. |
| `fetchBillingResults` (Required to implement use case [5-8-02](/portal/retainUseCases/topics/5802_retrieveResultsRetainProcessing):**Retrieve Results of Retain Processing**) | Returns the Vindicia Retain results over a specified time period. All transactions that have reached a terminal state during the specified time period are returned. |
| `fetchByMerchantTransactionId` | Returns the transaction specified by the merchant transaction ID. |
| `fetchChargebacks` | Returns an array of Chargeback objects received from your payment processor. |
| `refundTransactions` (Required to implement use case [5-8-03](/portal/retainUseCases/topics/5803_cancelSubmittedTransactions): **Cancel Submitted Retain Transactions** and use case [5-8-04](/portal/retainUseCases/topics/5804_refundTransaction): **Refund Retain Transactions**) | Sends an array of transactions to Vindicia Retain to be canceled or refunded. Captured transactions are refunded, transactions not captured are canceled. |
| `reportTransactions` | Reports data to Vindicia Retain for use in fighting chargebacks resulting from transactions not processed through Vindicia Retain. |

* **[billTransactions](../topics/billTransactions)**

* **[fetchBillingResults](../topics/fetchBillingResults)**

* **[fetchByMerchantTransactionId](../topics/fetchByMerchantTransactionId)**

* **[fetchChargebacks](../topics/fetchChargebacks)**

* **[refundTransactions](../topics/refundTransactions)**

* **[reportTransactions](../topics/reportTransactions)**

* **[addPaymentMethods](../topics/addPaymentMethods)**


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.