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();

Tuesday 30 July 2019

Why this Nigerian fintech startup is volunteering audited financials

Nigerian fintech firm Carbon — an early stage financial services startup based in Lagos — has posted financials audited by KPMG on its website.

This comes four months after the company obtained a credit rating as a pre-IPO venture. Carbon — which recently rebranded its OneFi holding company and PayLater product titles into one name  — plans to continue releasing its financial results on an annual basis, co-Founder and CEO Chijioke Dozie told TechCrunch.

This may not be totally unheard of in other global tech markets, but for startups in Africa’s big tech hubs — such as Nigeria — it’s a rarity.

One of the first glimpses into startup financials in Nigeria came when Jumia shareholder, Rocket Internet, went public in 2014, which required it to include limited Jumia data in its annual report. The accompanying prospectus to Jumia’s listing this year on the New York Stock Exchange offered the most expansive financial data to date on a tech venture operating in Africa.

Prior to this — and still for the most part — companies in the continent’s (mostly) pre-public  (earlier stage) startup hubs — such as Nigeria — provide little to no financial performance info.

“Typically, in the local market, we have not seen a lot of voluntary transparency or the availability of data,” said Lexi Novitske — a Lagos based VC investor at Acuity Venture Partners.

“Most startups are concerned such disclosure could expose losses, give market intel to competitors, or attract unwanted attention from regulators. It could also lead to negative negotiation leverage if partners saw that they were making good returns.”

So why’d Carbon go to the trouble of putting its pre-public accounting out in the open for anyone to see?

Clients and recruiting were two reasons. “From a customer perspective, we are trying to get people to trust us with their financial services…so they can see this is the institution I’m dealing with and this is their financial position,” explained Carbon’s Dozie.

Carbon has evolved from its original focus as an online lender, to offer a broader array of mobile-based financial services — including payments, investment products, credit reports, and business banking services. In March, the company acquired Nigerian payment solutions company Amplify for an undisclosed amount.

By stats offered by Briter Bridges and a 2018 WeeTracker survey, fintech now receives the bulk of VC capital and deal-flow to African startups, many of which are attempting to reach the continent’s large unbanked and underbanked populations.

Carbon fits into that category and its CEO believes being up front about the startup’s financial position will attract top talent. “From a recruitment perspective, we want recruits to know we have good prospects — that this is a company that’s doing well and wants to keep doing well,” said Dozie.

That impression is buoyed by Carbon’s initial results, which were fairly positive for a Series A stage startup. The company had revenues in 2018 of $10 million, according to its online annual report, and turned a profit of around $500,000.

It’s helped with recruiting interest, according to Dozie, who said he’d marked an increase in candidates inquiring about open positions since the results were posted.

Carbon Financial Results 2018 Nigeria Fintech II

The other reasons to volunteer financial data is to reassure investors (current and potential), shake off stereotypes for Nigeria, and better position Carbon globally.

“When you look at some of these challenger banks in the West, and you look at their numbers and our numbers, we could easily fit in with Monzo, N26, or Atom,” said Dozie.

“But we don’t get considered because investors don’t really think that you can get the results or this performance in the markets that we’re in,” he added —  noting that Carbon has operations in Nigeria, Ghana and South Africa and is considering expansion in Senegal, Côte d’Ivoire, DRC, and Egypt.

Investor Lexi Novitske thinks Carbon offering financial performance data is a good thing for Africa’s tech ecosystem. “The move builds trust from clients, partners, or investors in a market where there is not a lot of openness,” she said. “I am encouraged to see how other companies will react. My hope is that more will openly report their own metrics…”

Carbon CEO Chijioke Dozie says the company will continue to post audited financials on an annual basis, even if they show losses. If the startup continues to expand, attract capital, talent, and grow revenues, other Nigerian fintech firms may follow suit.

 

 

 



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support