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, 30 September 2019

Khatabook raises $25M to help businesses in India record financial transactions digitally and accept online payments

Even as tens of millions of Indians have come online for the first time in recent years, most businesses in the nation remain offline. They continue to rely on long notebooks to keep a log of their financial transactions. A nine-month old startup that is helping them digitize their bookkeeping and accept online payments just raised a significant amount of capital to expand its operations.

Khatabook, a Bangalore-based startup, said on Tuesday it has raised $25 million in a new financing round. The Series A round for the startup was funded by GGV Capital, Partners of DST Global, RTP Ventures, Sequoia India, Tencent, and Y Combinator. A clutch of high-profile angel investors including Amrish Rau, Anand Chandrasekharan, Deep Nishar, Gokul Rajaram, Jitendra Gupta, Kunal Bahl, and Kunal Shah also participated in the round. The startup has raised $29 million to date.

Khatabook operates an eponymous Android app that allows micro, small and medium-sized businesses to keep a digital log of their financial transactions and accept payments online. The app, which was launched on Google Play Store in December last year, has amassed 5 million merchants from more than 3,000 cities, towns, and villages in India, Ravish Naresh, cofounder and CEO of Khatabook, told TechCrunch in an interview this week.

The app, which does not charge merchants, was used to process transactions worth more than $3 billion in August, said Naresh. Most merchants in developing markets are currently not online. They continue to rely on logging their financial transactions — credit, for instance — on notebooks and pieces of paper. As you can imagine, this methodology is not structured.

khatabook team

Even as Reliance Jio, a telecom operator launched by India’s richest man Mukesh Ambani, upended the Indian market and brought tens of millions of Indians online for the first time in last three years, most businesses in the country are still carrying out their operations without the use of any technology, said Naresh. “Could we build an app that makes it very easy for merchants to digitize their bookkeeping?” he said.

“As soon as we launched the app, we instantly started to go viral,” he said. “These shop keepers and roadside vendors have an internet-enabled smartphone, they are just not using it in their businesses. All they needed was a simple-to-use app.”

For several months now, the startup has been seeing 20% growth each month, he said. In six months, the app has helped businesses recover $5 billion in previously unpaid credits, Naresh claimed. Without any marketing, the app has also gained a significant number of users in Nepal, Pakistan, and Bangladesh, said Naresh.

“At Khatabook, we have taken early but significant steps towards leveraging this trend to digitize India’s shopkeepers. For most of our merchants, we are the first business software they’ve used in their entire life. And we will continue to build more India-first innovations to further enable the growth of what is still a largely untapped sector,” he said.

In a statement, Hans Tung, Managing Partner of GGV Capital, said, “as a global investor, we seek out founders who understand the local market and respond to growth opportunities with speed and agility – we certainly see this with the Khatabook team.”

Naresh, a cofounder of property startup Housing, said Khatabook will use the capital to build new features such as billing and invoicing to serve merchants. In next 12 months, Khatabook aims to add 25 million businesses, he said.

A growing number of startups and major giants in India are attempting to help businesses. OkCredit, which raised $67 million last month, serves 5 million merchants. IndiaMART, a 23-year-old B2B firm that went public this year, led a round in a startup called Vyapar last month that is addressing similar problems. New Delhi-based BharatPe raised $50 million in late August to help businesses accept digital payments.

Last month, Google unveiled a version of its payment service for businesses that will allow them to quickly establish some web presence and accept online payments.

“India has more than 60 million small and medium-sized businesses, however only a fraction of them support digital payments. Imagine the transformation that is possible if more of these merchants could access payments online,” said Ambarish Kenghe, director and product manager for Google Pay, at the event.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support