Skip to main content

Request proforma refund

Request proforma refund

Last updated: 31-Aug-2022
Rate this article:


Use the requestProformaRefund method to initiate a refund for a paid partner proforma.


Parameter Type/Description
Uuid Required (String)
  Partner unique identifier.
proformaNumber Required (String)
  The unique identifier of a partner proforma in the 2Checkout system.
comment Optional (String)
  Refund reason/additional comments. Can be NULL.


Parameter Type/Description
result Boolean
  True or false




class Configuration
    public const MERCHANT_CODE = '';
    public const MERCHANT_KEY = '';
    public const URL = '';
    public const ACTION = 'requestProformaRefund';
    public const ADDITIONAL_OPTIONS = null;
    //array or JSON
    public const PAYLOAD = <<<JSON
            "Uuid": "96f2a739-ca6f-46bd-af03-f42e5048f653",
            "ProformaNumber": "6", 
            "Comment": "Comment"

class Client
    public function call(
        string $url = Configuration::URL,
               $payload = Configuration::PAYLOAD,
        string $action = Configuration::ACTION
    ): ?object
        if (is_array($payload)) {
            $payload = json_encode($payload);
        if (!empty($payload)) {
            // SoapClient works with objects(StdClass)
            $payload = json_decode($payload);

        $soapClient = $this->getClient($url);
        $sessionId = $this->getSession($soapClient);

        $args = array_filter([$sessionId, $payload]);

        return $soapClient->$action(...$args);

    public function getClient(string $url): SoapClient
        return new SoapClient(
            $url . '?wsdl',
                'location' => $url,
                'cache_wsdl' => WSDL_CACHE_NONE,

    public function getSession(SoapClient $client)
        $date = gmdate('Y-m-d H:i:s');
        $merchantCode = Configuration::MERCHANT_CODE;
        $key = Configuration::MERCHANT_KEY;
        $string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
        $hash = hash_hmac('md5', $string, $key);
        // $client->__setCookie('XDEBUG_SESSION', 'PHPSTORM');
        return $client->login($merchantCode, $date, $hash);

try {
    $client = new Client();
} catch (Exception $ex) {


Error Description


No partner is set.


Your partner invoice number is not valid.


A refund request was already placed for this partner invoice.


The partner invoice needs to be paid in order to send a refund request.

Rate this article:

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo