function customRequest($methodUrl, $inputPayload, $expectedOutputFields = array(), $extensions = array(), $method = "POST", $logOutput = false, $ignoreInvalidReturnSignature = false) {

		if (array_key_exists('dttm', $inputPayload) and !$inputPayload['dttm']) {
			$inputPayload['dttm'] = $this->getDTTM();
		}

		if (array_key_exists('merchantId', $inputPayload) and !$inputPayload['merchantId']) {
			$inputPayload['merchantId'] = $this->config->merchantId;
		}

		$signature = $this->signRequest($inputPayload);
		$inputPayload['signature'] = $signature;

		$this->writeToLog("custom request to $methodUrl - start");

		try {

			$ret = $this->sendRequest(
				$methodUrl,
				$inputPayload,
				$method,
				$expectedOutputFields,
				array_keys($inputPayload),
				false,
				$ignoreInvalidReturnSignature,
				$extensions
			);

		} catch (Exception $e) {
			$this->writeToLog("Fail, got exception: " . $e->getCode().", " . $e->getMessage());
			throw $e;
		}

		$this->writeToLog("custom request to $methodUrl - OK");

		if ($logOutput) {
			$this->writeToTraceLog(print_r($ret, true));
		}

		return $ret;

	}