Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Monday, 28 October 2019

Revisiting Jumia’s JForce scandal and Citron’s short-sell claims

In advance of Jumia’s November financial reporting, it’s worth revisiting the company’s second quarter results, the downside of which included some negative news beyond losses.

The Africa focused e-commerce company — with online verticals in 14 countries — did post second-quarter revenue growth of 58% (≈$43 million) and increased its customer base to 4.8 million from 3.2 million over the same period a year ago.

But Jumia also posted greater losses for the period, €67.8 million, compared to €42.3 million in 2018.

What appears to have struck the market more than revenues or losses was Jumia offering greater detail on the fraud perpetrated by some employees and agents of its JForce sales program.

This was another knock for the firm on its up and down ride since becoming the first tech company operating in Africa to list on the NYSE in April. The online retailer gained investor confidence out of the gate, more than doubling its $14.95 opening share price after the IPO.

That lasted until May, when Jumia’s stock came under attack from short-seller Andrew Left, whose firm Citron Research, issued a report accusing the company of fraud. That prompted several securities related lawsuits against Jumia.

At quick glance, Citron’s primary claim — that Jumia’s SEC filing contained discrepancies in sales figures — shares some resemblance to Jumia’s own disclosures.

The company’s share-price has suffered due to both — falling to less than 50% of its opening in April.

This has all funneled into an ongoing debate across Africa’s tech ecosystem on Jumia’s legitimacy as an African startup, given its (primarily) European senior management. Some of the most critical voices have gone so far as to support Left’s claims on Jumia’s fraud — and accept Jumia’s August admission as validation.

Sound messy and confusing? We’ll, yes, it is. But so go some IPOs.

Jumia’s info vs. Citron’s claims

Evaluating Jumia’s J-Force scandal vs. Citron’s short-sell claims is really Chartered Financial Analyst stuff. Citibank Research issued a brief rebutting Left’s claims in May and then another in August — though the firm has not made either public.

Judging by Jumia’s share-price fluctuation and chatter that continues in Africa’s tech ecosystem, there’s still confusion around both matters.

A simple exercise is to lay out the core of what Jumia has released vs. the crux of Citron Research’s claims.

On the J-Force/improper sales matter, here are excerpts of Jumia’s statement. Note that GMV is Gross Merchandise Value — the total amount of goods sold over the period: 

As disclosed in our prospectus dated April 11, 2019, we received information alleging that some of our independent sales consultants, members of our JForce program in Nigeria, may have engaged in improper sales practices. In response, we launched a review of sales practices covering all our countries of operation and data from January 1, 2017 to June 30, 2019.

Jumia did disclose this in its IPO prospectus on page 34

In the course of this review, we identified several JForce agents and sellers who collaborated with employees in order to benefit from differences between commissions charged to sellers and higher commissions paid to JForce agents. The transactions in question generated approximately 1% of our GMV in each of 2018 and the first quarter of 2019 and had virtually no impact on our 2018 or 2019 financial statements. We have terminated the employees and JForce agents involved, removed the sellers implicated and implemented measures designed to prevent similar instances in the future. The review of this matter is closed.

And finally, Jumia noted this:

More recently, we have also identified instances where improper orders were placed, including through the JForce program, and subsequently cancelled. Based on our findings to date, we believe that the transactions in question generated approximately 2% of our GMV in 2018, concentrated in the fourth quarter of 2018, approximately 4% in the first quarter of 2019 and approximately 0.1% in the second quarter of 2019. These 0.1% have already been adjusted for in the reported GMV figure for the second quarter of 2019. These transactions had no impact on our financial statements. We have suspended the employees involved pending the outcome of our review and are implementing measures designed to prevent similar instances in the future. We continue our review of this matter.

That’s the gist of Jumia’s disclosure: a small number of employees cooked some sales numbers and commissions, it was negligible to our financials, we flagged the investigation in our IPO prospectus, we took action, we ended it.

The Citron Research report Andrew Left issued to support his short-sell position made several critical claims regarding Jumia, but labeled “the smoking gun” as alleged material inconsistencies between an October 2018, Jumia investor presentation and Jumia’s April SEC Form F-1.

For the year 2017, there’s a difference of 600,000 active customers and 10,000 merchants in Jumia’s reporting between the fall 2018 investor presentation and the recent 2019 F-1, according to Citron Research. Citron also goes on to press concerns with GMV:

In order to raise more money from investors, Jumia inflated its active consumers and active merchants figures by 20-30% (FRAUD).

The most disturbing disclosure that Jumia removed from its F-1 filing was that 41% of orders were returned, not delivered, or cancelled.

This was previously disclosed in the Company’s October 2018 confidential investor presentation. This number is so alarming that is screams fraudulent activities. Instead, Jumia disclosed that “orders accounting for 14.4% of our GMV were either failed deliveries or returned by our consumers” in 2018.

TechCrunch connected with Jumia’s CEO Sacha Poignonnec and Citron Research’s Andrew Left since the August earnings reporting and disclosures.

On whether Jumia’s revelation of improper sales practices validated the fraud claims in Citron’s Brief, “It’s not the same,” Poignnonec,” told me on a call last month.

“For every one of those allegations,” he said referring to Left’s research, “there is a clear and simple answer for each of them and we have provided those,” said Poignnonec.

Where is Andrew Left on the matter? “I’m no longer short the stock” he told TechCrunch in a mail this week.

“But that does not mean the stock is a buy whatsoever,” he added — sticking to the fundamentals of his May brief.

What to make of it all?

It appears that what Jumia disclosed in its April prospectus (and added more detail to in August) does not provide one-to-one validation of the claims in Citron Research’s May report.

But then again, the entire matter — the data, the similar terminology, the multiple docs and disclosures — is still all a bit confusing.

That was evident in an exchange between Sacha Poignonnec and CNBC contributor John Fortt after Jumia’s 2nd quarter earnings call (see 1:19). Fort pressed Poignonnec on Left’s claims vs. Jumia’s admissions and still came away a bit puzzled.

The market, too, appears to be impacted by the fuzziness around Jumia’s disclosure of improper sales practices and Andrew Left’s claims.

Jumia’s share price plummeted 43% the week Left released his short-sell claims, from $49 to $26.

The company’s stock price has continued to decline since Jumia’s August earnings call (and sales-fraud disclosure) to $6.52 at close Monday.

That’s 50% below the company’s opening in April and 80% below its high before Citron’s Research brief and Andrew Left’s short-sell position.

Jumia Stock Snapshot To October 28 2019

Jumia’s core investors appeared to show continued confidence in the company this month, when there wasn’t a big selloff after the IPO lockup period expired.

Even so, Jumia’s 3rd quarter earning’s call on November 12 could be a bit make or break for the company with investors given all the volatility the e-commerce venture has faced since listing and its rapid loss in value.

As a public company now, the most direct way for Jumia to revive its share-price (and investor confidence) would be demonstrating it has reduced losses while maintaining or boosting revenues.

Of course, that’s the prescription for just about any recently IPO’d tech venture.

What Jumia may want to evaluate pre-earnings call is the extent to which its own sales-fraud disclosure and Andrew Left’s allegations are still being mashed together and impacting brand-equity in Africa and investor confidence abroad.

From there it could be wise to address both head on and explain — in a way that is as easy as possible for people to understand — how the two are not the same and don’t have a bearing on Jumia’s brand or business model.



from TechCrunch https://ift.tt/2MRE2Pk
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support