# Support
source: https://developer.mastercard.com/iccp/documentation/support/index.md

## Frequently Asked Questions {#frequently-asked-questions}

### Setting Up {#setting-up}

Engage with your Mastercard representative to agree to the process of integrating your application to the ICCP API. You can also visit [Quick Start Guide](https://developer.mastercard.com/iccp/documentation/quick-start-guide/index.md). Mastercard provides a [Reference Application](https://developer.mastercard.com/iccp/documentation/ref_app_tutorials/reference-application/index.md), which contains sample codes written in Java for all ICCP API calls. You can use those sample codes as a base to develop your integration. Mastercard recommends using Insomnia with the Mastercard Developer OAuth Signer add-in. See [Authentication](https://developer.mastercard.com/iccp/documentation/api_basics/soap_api_basics/index.md#authentication) for more details.
1. Download the reference application, click [sd-commercial-iccp-openapi-java-client.zip](https://static.developer.mastercard.com/content/iccp/uploads/sd-commercial-iccp-openapi-java-client.zip) (56KB).
2. Extract the downloaded zip file to a folder of your choice.
3. Go to the `[extracted-folder]/src/test/resources/wsdl` location

### About Mastercard In Control Products {#about-mastercard-in-control-products}

Mastercard has standardized requirements for real card number (RCN) maintenance for Commercial ranges that are used by all current and future Mastercard® In Control® products. All Issuers that use In Control, now or in the future, must use either Mastercard's Automatic Billing Updater (ABU) or perform RCN maintenance directly within In Control. For more details refer to *AN 8635 Announcing Standardized Requirements for RCN Maintenance* in the [**Mastercard Connect™ \> Technical Resource Center**](https://www.mastercardconnect.com/-/sign-in).

The recommended automated approach for Issuers is to ensure that all ranges are enrolled in ABU. Customers can use ABU to keep expiration dates synchronized giving a smoother customer experience. Alternatively, RCN can be maintained manually within Mastercard In Control if ABU is not an option. More information about ABU can be found on Mastercard Connect. Contact your Mastercard Account Manager if you have other questions about ABU or want to learn more.

### Creating VCN {#creating-vcn}

A Virtual Card Number (VCN) is a credit card number, which is generated dynamically for a particular payment purpose. It is created with a limited validity period and controls on how it should be spent. Corporate buyers can create virtual cards to pay supplier invoices and cover business expenses. A purchase request is a method of creating a VCN, applying controls to it, and tracking the spending activity on the VCN. Purchase requests creates and manages VCNs for commercial payment activities. Refer to the [submit purchase request](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/purchaserequest/submitpurchaserequest/index.md) call for creating a purchase request. Your administrator should guide you on which purchase template to use for different payment types. Refer to [purchase templates](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/configuration-details/getcompanypurchasetemplatedetail/index.md) for more details. The purchase template lists the controls available to set on a VCN. Refer to [Controls](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/purchaserequest/control_elements/index.md) for more details. Your company administrator provides you with either a list of suppliers to choose based on the transaction, or a generic supplier to use for all transactions. You can use the velocity control, provided the purchase template supports it. Refer to [Controls](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/purchaserequest/control_elements/index.md) for more details. You can use [custom data fields](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/configuration-details/getcompanypurchasetemplatedetail/index.md) to add additional data, including invoice details, to a purchase request. Alternatively, to add structured invoice data, you can use the invoice [addenda](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/purchaserequest/invoice_addenda_data/addaddenda/index.md) data capability.

### Using VCNs {#using-vcns}

Once you receive a success response to a [submit](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/purchaserequest/submitpurchaserequest/index.md) purchase request call, the VCN is live in the Mastercard network. You can then use it to make a payment within the boundaries of the spending controls set. A VCN is valid for the number of months you specify when you [submit](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/purchaserequest/submitpurchaserequest/index.md) a purchase request call. You can also specify a validity period for the VCN using a control setting. You can make a payment using the VCN like any other Mastercard credit card in a card-not-present transaction. You need the card number, expiry date and the CVC to make a payment. These details are contained in the API response when you create the VCN. You can use the [reporting](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/reports/create_reports/index.md) API calls to obtain details about the authorization and clearing activities on a VCN. You can send a [cancel](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/reports/create_reports/index.md) purchase request call to deactivate one or more VCNs. The deactivated VCNs are then no longer usable for payment. Your commercial card issuer can advise what to use in these fields if required for eCommerce checkout.

### Making and Troubleshooting API Calls {#making-and-troubleshooting-api-calls}

You need to check both the HTTP response stats and the content of the response message.

* If you receive a HTTP error status, then your call has failed. You should review the error status and payload content to determine how to correct the error.
* If you receive a HTTP success response, you still need to verify if the response contains error details and address the error accordingly.
* If there is a HTTP success status with no error details in the response, then your API call has succeeded. See the [error](https://developer.mastercard.com/iccp/documentation/error_handling/06error_codes/index.md) codes page for more details.
This error occurs when the payload of your request does not meet the schema definition for that call, as defined in the XSD files provided with the [reference](https://developer.mastercard.com/iccp/documentation/ref_app_tutorials/reference-application/index.md) application. The error message identifies the elements that are incorrect in the request. Refer to the sample code and sample requests provided in the reference application to make correctly structured calls. Ensure you have set the content-type in the header of the request to `text/xml`. This is required so that the request will be processed correctly. This error occurs if you set up a spending control in a purchase request that does not exist in the purchase template. Use the [getCompanyPurchaseTemplateDetail](https://developer.mastercard.com/iccp/documentation/05_api_reference/soap_api/configuration-details/getcompanypurchasetemplatedetail/index.md) call to know about the spending controls supported by a purchase template before using that template in a purchase request. No. You may be able to create a purchase request through the API from an expired RCN, the transaction will fail at Authorization.
* SOAP API: 300 seconds
* REST API: 30 seconds

For more information about Idempotency-Key, see [Idempotency](https://developer.mastercard.com/iccp/documentation/api_basics/idempotency/idempotency-soap/index.md).

## Get Help {#get-help}

### Contact us for technical support. {#contact-us-for-technical-support}

