{"info":{"_postman_id":"c6d229f2-5c12-43a7-85d3-2c687425e2fe","name":"My-CoolPay API Docs","description":"<html><head></head><body><img src=\"https://mycoolpay.s3.amazonaws.com/api-docs/Merchant+Dashboard.jpg\" alt=\"My-CoolPay%20merchant%20dashboard\">\n\n<blockquote>\n<p><a href=\"https://my-coolpay.com\">My-CoolPay</a> Merchant API is the easiest and most secure way to effortlessly accept payments from your customers on your websites and mobile applications. It has several integrated payment methods (Orange Money, MTN Mobile Money, VISA, Mastercard, My-CoolPay...) and offers you a unified view for a better follow-up of your activity.</p>\n</blockquote>\n<ul>\n<li>Developer: <a href=\"https://digitalhouse-int.com\"><strong>Digital House International (DHI)</strong></a></li>\n<li>Support address: <a href=\"mailto:support@my-coolpay.com\"><strong>support@my-coolpay.com</strong></a></li>\n<li>Contact / WhatsApp: <a href=\"https://wa.me/237654197288\"><strong>(+237) 654 197 288</strong></a></li>\n<li>Last edit: <strong>28/07/2022</strong></li>\n</ul>\n<hr>\n<h1 id=\"french-version\">French version 🇫🇷</h1>\n<p><em>Une ancienne version de cette documentation est disponible en français, elle n'a pas été mise à jour depuis le</em> <em><strong>14/10/2021</strong></em>. Il est possible qu'elle soit obsolète à l'heure actuelle. Si vous souhaitez néanmoins l'utiliser, elle est disponible au format PDF à l'adresse ci-dessous.<br><a href=\"https://mycoolpay.s3.amazonaws.com/api-docs/My-CoolPay_API_Documentation_FR_2021-10-14.pdf\"><del>My-CoolPay_API_Documentation_FR_2021-10-14.pdf</del></a></p>\n<hr>\n<h1 id=\"requirements\">Requirements</h1>\n<blockquote>\n<p>Before you can integrate <a href=\"https://my-coolpay.com\">My-CoolPay</a> Merchant API into your website or application, you must:</p>\n</blockquote>\n<ol>\n<li>Have access to My-CoolPay merchant area, it can be obtained by following My-CoolPay’s <a href=\"https://my-coolpay.com/fr/wallet/merchant_account_request\">Merchant API application</a> procedure;</li>\n<li><a href=\"https://my-coolpay.com/merchant/application/new\">Create an application</a> from your merchant area by filling in following information:<ul>\n<li>A name (which will be displayed on your payment page);</li>\n<li>The link to the home page of your website (or application);</li>\n<li>The URL of the logo to be displayed on your payment page;</li>\n<li>A redirection URL in case of a successful payment;</li>\n<li>A redirection URL in case of cancelled payment;</li>\n<li>A redirection URL in case of failed payment;</li>\n<li>A callback URL (see callback handling);</li>\n<li>The email address that should receive payment notifications.</li>\n</ul>\n</li>\n<li>Have your application validated by My-CoolPay (done automatically within 24h after creation);</li>\n<li>Transmit to My-CoolPay by email, the IP addresses (maximum 3) of your servers authorized to make withdrawals, in case you wish to use <strong>Payout API</strong>.</li>\n</ol>\n<p>Once this has been done, you will see two API keys appear in the application details: a <strong>public key</strong> and a <strong>private key</strong> (to be kept secret).</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"French version 🇫🇷","slug":"french-version"},{"content":"Requirements","slug":"requirements"}],"owner":"17178321","collectionId":"c6d229f2-5c12-43a7-85d3-2c687425e2fe","publishedId":"UV5ZCx8f","public":true,"customColor":{"top-bar":"EDEDED","right-sidebar":"001B2B","highlight":"00578A"},"publishDate":"2021-10-21T16:49:59.000Z"},"item":[{"name":"1. Web APIs","item":[{"name":"Paylink","id":"e610fa62-3e27-400f-b012-a60091201ef0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": \"number\",\r\n    \"transaction_currency\": \"string\",\r\n    \"transaction_reason\": \"string\",\r\n    \"app_transaction_ref\": \"string\",\r\n    \"customer_phone_number\": \"string\",\r\n    \"customer_name\": \"string\",\r\n    \"customer_email\": \"string\",\r\n    \"customer_lang\": \"string\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/paylink","description":"<blockquote>\n<p><strong>Paylink API</strong> allows you to generate a single-use payment link. You will need to redirect the user to the URL received in the response so that he can make his payment. The payment process will be entirely managed by My-CoolPay.</p>\n</blockquote>\n<blockquote>\n<p><strong>📝 Note:</strong> You have the possibility to pass parameters in the URL, as many as you want, as long as the size (length) of the parameters does not exceed 255 characters. At the end of the payment, these parameters will be inserted in the URL to which the customer will be redirected (success, cancellation or failure).<br />In this case, the URL will look like: <code>https://my-coolpay.com/api/{public_key}/paylink?param1=val1&amp;param2=val2…</code></p>\n</blockquote>\n<h3 id=\"body-description\">Body description</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Expected</th>\n<th>Required</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transaction_amount</td>\n<td>number</td>\n<td>Yes</td>\n<td></td>\n<td>Amount to pay</td>\n</tr>\n<tr>\n<td>transaction_currency</td>\n<td>XAF / EUR</td>\n<td></td>\n<td>XAF</td>\n<td>Currency</td>\n</tr>\n<tr>\n<td>transaction_reason</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Payment reason</td>\n</tr>\n<tr>\n<td>app_transaction_ref</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Unique transaction reference in your system</td>\n</tr>\n<tr>\n<td>customer_name</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Payer's name</td>\n</tr>\n<tr>\n<td>customer_phone_number</td>\n<td>phone</td>\n<td></td>\n<td></td>\n<td>Payer's phone number</td>\n</tr>\n<tr>\n<td>customer_email</td>\n<td>email</td>\n<td></td>\n<td></td>\n<td>Payer's email address</td>\n</tr>\n<tr>\n<td>customer_lang</td>\n<td>en / fr</td>\n<td></td>\n<td>fr</td>\n<td>Payer's language</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","{public_key}","paylink"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"008824fb-9f7a-4860-8667-c3392f0505bc","name":"Paylink","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": 100,\r\n    \"transaction_currency\": \"XAF\",\r\n    \"transaction_reason\": \"Bic pen\",\r\n    \"app_transaction_ref\": \"order_123\",\r\n    \"customer_phone_number\": \"699009900\",\r\n    \"customer_name\": \"Bob MARLEY\",\r\n    \"customer_email\": \"bob@mail.com\",\r\n    \"customer_lang\": \"en\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/paylink"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\",\r\n    \"payment_url\": \"https://my-coolpay.com/payment/checkout/17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\"\r\n}"}],"_postman_id":"e610fa62-3e27-400f-b012-a60091201ef0"}],"id":"c59ff2b8-8899-4f18-83b7-8e16e68c74a2","description":"<blockquote>\n<p>This section describes how to collect payments from web applications or websites. The general flow is as follow: <a href=\"https://mycoolpay.s3.amazonaws.com/api-docs/Paylink+Sequence.png\"><img src=\"https://mycoolpay.s3.amazonaws.com/api-docs/Paylink+Sequence.png\" alt=\"Paylink Sequence\" /></a></p>\n</blockquote>\n","_postman_id":"c59ff2b8-8899-4f18-83b7-8e16e68c74a2"},{"name":"2. Mobile APIs","item":[{"name":"Payin","id":"66c6881a-1cb9-4532-b47a-c1d09a3f2741","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": \"number\",\r\n    \"transaction_currency\": \"string\",\r\n    \"transaction_reason\": \"string\",\r\n    \"app_transaction_ref\": \"string\",\r\n    \"customer_phone_number\": \"string\",\r\n    \"customer_name\": \"string\",\r\n    \"customer_email\": \"string\",\r\n    \"customer_lang\": \"string\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payin","description":"<blockquote>\n<p><strong>Payin API</strong> allows you to initialize synchronous payment. You will need to entirely manage payment flow.</p>\n</blockquote>\n<h3 id=\"body-description\">Body description</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Expected</th>\n<th>Required</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transaction_amount</td>\n<td>number</td>\n<td>Yes</td>\n<td></td>\n<td>Amount to pay (in XAF)</td>\n</tr>\n<tr>\n<td>transaction_currency</td>\n<td>XAF</td>\n<td></td>\n<td>XAF</td>\n<td>Currency</td>\n</tr>\n<tr>\n<td>transaction_reason</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Payment reason</td>\n</tr>\n<tr>\n<td>app_transaction_ref</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Unique transaction reference in your system</td>\n</tr>\n<tr>\n<td>customer_name</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Payer's name</td>\n</tr>\n<tr>\n<td>customer_phone_number</td>\n<td>phone</td>\n<td>Yes</td>\n<td></td>\n<td>Payer's phone number</td>\n</tr>\n<tr>\n<td>customer_email</td>\n<td>email</td>\n<td></td>\n<td></td>\n<td>Payer's email address</td>\n</tr>\n<tr>\n<td>customer_lang</td>\n<td>en / fr</td>\n<td></td>\n<td>fr</td>\n<td>Payer's language</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","{public_key}","payin"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"80599bc8-8010-4d89-a792-0818ffe9718a","name":"Payin","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": 100,\r\n    \"transaction_currency\": \"XAF\",\r\n    \"transaction_reason\": \"Bic pen\",\r\n    \"app_transaction_ref\": \"order_124\",\r\n    \"customer_phone_number\": \"699009900\",\r\n    \"customer_name\": \"Bob MARLEY\",\r\n    \"customer_email\": \"bob@mail.com\",\r\n    \"customer_lang\": \"en\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payin"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\",\r\n    \"action\": \"PENDING\",\r\n    \"ussd\": \"#150*50#\"\r\n}"},{"id":"f9c14c42-c33d-4359-b806-a1a0958f3997","name":"Payin with OTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": 100,\r\n    \"transaction_currency\": \"XAF\",\r\n    \"transaction_reason\": \"Bic pen\",\r\n    \"app_transaction_ref\": \"order_124\",\r\n    \"customer_phone_number\": \"699009900\",\r\n    \"customer_name\": \"Bob MARLEY\",\r\n    \"customer_email\": \"bob@mail.com\",\r\n    \"customer_lang\": \"en\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payin"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\",\r\n    \"action\": \"REQUIRE_OTP\"\r\n}"}],"_postman_id":"66c6881a-1cb9-4532-b47a-c1d09a3f2741"},{"name":"OTP","id":"f4fd89ea-e647-462c-9489-afc0aeb90d5f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"string\",\r\n    \"code\": \"string\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payin/authorize","description":"<blockquote>\n<p>For some security reasons, My-CoolPay may want to authenticate the phone  number which is going to pay (this means you received {action: \"REQUIRE_OTP\"} in Payin response). <strong>OTP API</strong> allows you to authenticate customer's phone number.</p>\n</blockquote>\n<h3 id=\"body-description\">Body description</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Expected</th>\n<th>Required</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transaction_ref</td>\n<td>string</td>\n<td>Yes</td>\n<td></td>\n<td>Transaction reference received in Payin response</td>\n</tr>\n<tr>\n<td>code</td>\n<td>string</td>\n<td>Yes</td>\n<td></td>\n<td>OTP code sent by SMS to customer</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["api","{public_key}","payin","authorize"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"d861ca1c-765d-4258-a1c0-2b35f26e7ce7","name":"OTP","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\",\r\n    \"code\": \"1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payin/authorize"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\",\r\n    \"action\": \"PENDING\",\r\n    \"ussd\": \"#150*50#\"\r\n}"},{"id":"6458500d-76e2-4b19-92f0-625932bdcaa8","name":"OTP failed","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\",\r\n    \"code\": \"1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payin/authorize"},"status":"Unauthorized","code":401,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"error\",\r\n    \"message\": \"Invalid authorization code !\"\r\n}"}],"_postman_id":"f4fd89ea-e647-462c-9489-afc0aeb90d5f"}],"id":"2e8ee2c4-5bb7-4700-92b6-17bf6cdea9f9","description":"<blockquote>\n<p>This section describes how to collect payments from mobile or desktop applications. The general flow is as follow: <a href=\"https://mycoolpay.s3.amazonaws.com/api-docs/Payin+Sequence.png\"><img src=\"https://mycoolpay.s3.amazonaws.com/api-docs/Payin+Sequence.png\" alt=\"Payin Sequence\" /></a></p>\n</blockquote>\n","_postman_id":"2e8ee2c4-5bb7-4700-92b6-17bf6cdea9f9"},{"name":"3. Payout APIs","item":[{"name":"Payout","id":"5c202ba5-c602-4106-9347-c055ba8fdf17","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"},{"key":"X-PRIVATE-KEY","value":"{private_key}","type":"text","description":"<p>Your application private key</p>\n"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": \"number\",\r\n    \"transaction_currency\": \"string\",\r\n    \"transaction_reason\": \"string\",\r\n    \"transaction_operator\": \"string\",\r\n    \"app_transaction_ref\": \"string\",\r\n    \"customer_phone_number\": \"string\",\r\n    \"customer_name\": \"string\",\r\n    \"customer_email\": \"string\",\r\n    \"customer_lang\": \"string\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payout","description":"<blockquote>\n<p>Payout API allows you to transfer money from your My-CoolPay account to MTN MoMo account, Orange Money account or another My-CoolPay account.</p>\n</blockquote>\n<h3 id=\"body-description\">Body description</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Expected</th>\n<th>Required</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><del>private_key</del></td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Now deprecated in body, use X-PRIVATE-KEY header instead</td>\n</tr>\n<tr>\n<td>transaction_amount</td>\n<td>number</td>\n<td>Yes</td>\n<td></td>\n<td>Amount to withdraw (in XAF)</td>\n</tr>\n<tr>\n<td>transaction_currency</td>\n<td>XAF</td>\n<td></td>\n<td>XAF</td>\n<td>Currency</td>\n</tr>\n<tr>\n<td>transaction_reason</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Withdrawal reason</td>\n</tr>\n<tr>\n<td>transaction_operator</td>\n<td>MCP / CM_MOMO / CM_OM</td>\n<td>Yes, for My-CoolPay Withdrawal</td>\n<td></td>\n<td>Operator (My-CoolPay, MTN Mobile Money, Orange Money)</td>\n</tr>\n<tr>\n<td>app_transaction_ref</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Unique transaction reference in your system</td>\n</tr>\n<tr>\n<td>customer_name</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Recipient's name</td>\n</tr>\n<tr>\n<td>customer_phone_number</td>\n<td>phone</td>\n<td></td>\n<td></td>\n<td>Recipient's phone number (required if operator is not MCP)</td>\n</tr>\n<tr>\n<td>customer_username</td>\n<td>string</td>\n<td></td>\n<td></td>\n<td>Recipient's My-CoolPay username</td>\n</tr>\n<tr>\n<td>customer_email</td>\n<td>email</td>\n<td></td>\n<td></td>\n<td>Recipient's email</td>\n</tr>\n<tr>\n<td>customer_lang</td>\n<td>en / fr</td>\n<td></td>\n<td>fr</td>\n<td>Recipient's language</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p>📝 Note: To make a withdrawal to a My-CoolPay wallet, you must provide one of the following properties: customer_phone_number, customer_username, customer_email</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","{public_key}","payout"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"8c2c576c-a533-4a91-8884-fc94bce57eb8","name":"Payout","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"},{"key":"X-PRIVATE-KEY","value":"{private_key}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": 500,\r\n    \"transaction_currency\": \"XAF\",\r\n    \"transaction_reason\": \"Customer refund\",\r\n    \"transaction_operator\": \"CM_OM\",\r\n    \"app_transaction_ref\": \"refund_123\",\r\n    \"customer_phone_number\": \"699009900\",\r\n    \"customer_name\": \"Bob MARLEY\",\r\n    \"customer_email\": \"bob@mail.com\",\r\n    \"customer_lang\": \"en\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payout"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"message\": \"Successful transaction !\",\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\"\r\n}"},{"id":"dd4c961c-bd91-4ed1-8522-2f8398211946","name":"Payout in progress","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"},{"key":"X-PRIVATE-KEY","value":"{private_key}","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_amount\": 500,\r\n    \"transaction_currency\": \"XAF\",\r\n    \"transaction_reason\": \"Customer refund\",\r\n    \"transaction_operator\": \"CM_OM\",\r\n    \"app_transaction_ref\": \"refund_123\",\r\n    \"customer_phone_number\": \"699009900\",\r\n    \"customer_name\": \"Bob MARLEY\",\r\n    \"customer_email\": \"bob@mail.com\",\r\n    \"customer_lang\": \"en\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/payout"},"status":"Accepted","code":202,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"message\": \"Transaction in progress...\",\r\n    \"transaction_ref\": \"17178321-c6d229f2-5c12-43a7-85d3-2c687425e2fe\"\r\n}"}],"_postman_id":"5c202ba5-c602-4106-9347-c055ba8fdf17"}],"id":"3fb215c1-3b89-4907-a929-568b24ab9768","description":"<blockquote>\n<p>This section describes how to transfer money from your My-CoolPay account to other operators. The general flow is as follow: <a href=\"https://mycoolpay.s3.amazonaws.com/api-docs/Payout+Sequence.png\"><img src=\"https://mycoolpay.s3.amazonaws.com/api-docs/Payout+Sequence.png\" alt=\"Payout Sequence\" /></a></p>\n</blockquote>\n","_postman_id":"3fb215c1-3b89-4907-a929-568b24ab9768"},{"name":"4. Status check APIs","item":[{"name":"Check status","id":"4c0bcbae-66a2-4312-8124-feb6d986d296","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://my-coolpay.com/api/{public_key}/checkStatus/{transaction_ref}","description":"<blockquote>\n<p><strong>Check status API</strong> allows you to check the status of a transaction by providing its reference.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","{public_key}","checkStatus","{transaction_ref}"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"724c673d-d4af-4482-95f8-86897741396c","name":"Check status","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"https://my-coolpay.com/api/{public_key}/checkStatus/18ac6335-2bdd-4b95-944e-ef029c49c5b5"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\r\n    \"status\": \"success\",\r\n    \"app_transaction_ref\": \"order_123\",\r\n    \"operator_transaction_ref\": \"MP200618.1634.A34527\",\r\n    \"transaction_ref\": \"18ac6335-2bdd-4b95-944e-ef029c49c5b5\",\r\n    \"transaction_type\": \"PAYIN\",\r\n    \"transaction_amount\": 100,\r\n    \"transaction_fees\": 2,\r\n    \"transaction_currency\": \"XAF\",\r\n    \"transaction_operator\": \"CM_OM\",\r\n    \"transaction_status\": \"PENDING\",\r\n    \"transaction_reason\": \"Bic pen\",\r\n    \"transaction_message\": null,\r\n    \"customer_phone_number\": \"699009900\"\r\n}"}],"_postman_id":"4c0bcbae-66a2-4312-8124-feb6d986d296"},{"name":"Check status (Legacy)","id":"13cec29a-0de2-4f91-9d87-6b060f69a7b6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"string\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/checkStatus","description":"<blockquote>\n<p>This is the legacy (old) version of <strong>Check status API</strong>. It's now deprecated, if you are new to our API, use <strong>GET version</strong> instead.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","{public_key}","checkStatus"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"8a34060e-64c3-4293-b180-261be7a70f4b","name":"Check status (Legacy)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"transaction_ref\": \"18ac6335-2bdd-4b95-944e-ef029c49c5b5\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://my-coolpay.com/api/{public_key}/checkStatus"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"See response in Check status API above"}],"_postman_id":"13cec29a-0de2-4f91-9d87-6b060f69a7b6"}],"id":"6db93261-46bc-4037-aceb-1c63e991e5c2","description":"<blockquote>\n<p>For some reasons, you may want to programmatically check the status of a transaction. This section describe how you can perform that.</p>\n</blockquote>\n","_postman_id":"6db93261-46bc-4037-aceb-1c63e991e5c2"},{"name":"5. Balance APIs","item":[{"name":"Balance","id":"95bae9d4-30a6-413b-9f27-b15b7dfe12b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"X-PRIVATE-KEY","value":"{private_key}","description":"<p>Your application private key</p>\n","type":"text"}],"url":"https://my-coolpay.com/api/{public_key}/balance","description":"<blockquote>\n<p><strong>Balance API</strong> allows you to retrieve the balance of your application.</p>\n</blockquote>\n","urlObject":{"protocol":"https","path":["api","{public_key}","balance"],"host":["my-coolpay","com"],"query":[],"variable":[]}},"response":[{"id":"13d2df43-3aee-4f1a-ae0c-253a86d86ab9","name":"Check status","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"X-PRIVATE-KEY","value":"{private_key}","type":"text"}],"url":"https://my-coolpay.com/api/{public_key}/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\",\n    \"balance\": 500\n}"}],"_postman_id":"95bae9d4-30a6-413b-9f27-b15b7dfe12b1"}],"id":"405370d2-fac1-4e4c-b194-faf5efd3514a","_postman_id":"405370d2-fac1-4e4c-b194-faf5efd3514a","description":""},{"name":"6. Callback handling (Webhook)","item":[],"id":"7399ce2a-0056-48b8-8f42-581abeae3e84","description":"<blockquote>\n<p>After each transaction, My-CoolPay notifies your system by making a POST request to the callback URL of your application with the following body:</p>\n</blockquote>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"application\": \"{public_key}\",\n    \"app_transaction_ref\": \"order_123\",\n    \"operator_transaction_ref\": \"MP200618.1634.A34527\",\n    \"transaction_ref\": \"18ac6335-2bdd-4b95-944e-ef029c49c5b5\",\n    \"transaction_type\": \"PAYIN\",\n    \"transaction_amount\": 100,\n    \"transaction_fees\": 2,\n    \"transaction_currency\": \"XAF\",\n    \"transaction_operator\": \"CM_OM\",\n    \"transaction_status\": \"SUCCESS\",\n    \"transaction_reason\": \"Bic pen\",\n    \"transaction_message\": \"Your transaction has been successfully completed\",\n    \"customer_phone_number\": \"699009900\",\n    \"signature\": \"d41d8cd98f00b204e9800998ecf8427e\"\n}\n\n</code></pre>\n<h3 id=\"callback-body-description\">Callback body description</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Possible values</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>application</td>\n<td>string</td>\n<td>Public key of your application</td>\n</tr>\n<tr>\n<td>app_transaction_ref</td>\n<td>string</td>\n<td>Unique transaction reference in your system</td>\n</tr>\n<tr>\n<td>operator_transaction_ref</td>\n<td>string</td>\n<td>Reference of the transaction in the operator system</td>\n</tr>\n<tr>\n<td>transaction_ref</td>\n<td>string</td>\n<td>Reference of the transaction at My-CoolPay</td>\n</tr>\n<tr>\n<td>transaction_type</td>\n<td>PAYIN / PAYOUT</td>\n<td>Transaction type (in or out)</td>\n</tr>\n<tr>\n<td>transaction_amount</td>\n<td>number</td>\n<td>Amount</td>\n</tr>\n<tr>\n<td>transaction_fees</td>\n<td>number</td>\n<td>Fees applied to the transaction by My-CoolPay</td>\n</tr>\n<tr>\n<td>transaction_currency</td>\n<td>XAF</td>\n<td>Currency</td>\n</tr>\n<tr>\n<td>transaction_operator</td>\n<td>MCP / CM_MOMO / CM_OM / CARD</td>\n<td>Operator (My-CoolPay, MTN Mobile Money, Orange Money or Card)</td>\n</tr>\n<tr>\n<td>transaction_status</td>\n<td>SUCCESS / CANCELED / FAILED</td>\n<td>Transaction status</td>\n</tr>\n<tr>\n<td>transaction_reason</td>\n<td>string</td>\n<td>Transaction reason</td>\n</tr>\n<tr>\n<td>transaction_message</td>\n<td>string</td>\n<td>Message displayed to the customer</td>\n</tr>\n<tr>\n<td>customer_phone_number</td>\n<td>string</td>\n<td>Phone number used in transaction</td>\n</tr>\n<tr>\n<td>signature</td>\n<td>string</td>\n<td>Callback MD5 signature (see formula below)</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"callback-md5-signature\">Callback MD5 signature</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">signature = md5(\n    transaction_ref\n    + transaction_type\n    + transaction_amount\n    + transaction_currency\n    + transaction_operator\n    + private_key\n)\n// Sign + means string concatenation.\n// Numbers should be converted to strings without non significant zeros.\n\n</code></pre>\n<h3 id=\"important-note\">Important note</h3>\n<blockquote>\n<p><strong>📝 Note that, for a given transaction, My-CoolPay will send a callback only once.</strong> There is no possible retry in case of failure. If for some reason your system didn’t receive callback for a transaction, you can check its status by using <strong>Check status API</strong>.</p>\n</blockquote>\n","_postman_id":"7399ce2a-0056-48b8-8f42-581abeae3e84"},{"name":"7. Security 🔐","item":[],"id":"0c4cf5ed-f0c6-4dea-bd2e-0b4a3dd03687","description":"<h2 id=\"71-api-keys-privacy\">7.1. API keys privacy</h2>\n<p><strong>🔒 Public key:</strong> This key is the one that identifies your application on My-CoolPay, it is public and you won't run any security risk by exposing it.</p>\n<p><strong>🔑 Private key:</strong> This key is to be kept secret, avoid leaving it lying around in the versioning if you are using a VCS (like Git or Mercurial). It is used by My-CoolPay to sign your callback requests and by you as a password during API withdrawals.</p>\n<blockquote>\n<p><strong>⚠️ Warning:</strong> If you become aware that your keys have been compromised or are being used illegally, generate new keys from your My-CoolPay merchant area.</p>\n</blockquote>\n<h2 id=\"72-ssl-certificate\">7.2. SSL certificate</h2>\n<p>It is highly recommended (or even mandatory) to install an SSL certificate on your server so that data exchanges with it are secure. <strong>My-CoolPay won’t send payment notifications (callback) to neither an unsecured address, nor localhost.</strong></p>\n<h2 id=\"73-securing-the-callback-url\">7.3. Securing the callback URL</h2>\n<p>In order to reduce the risk of attack, it is also recommended to choose a complex callback URL (difficult to remember or imagine).<br /><code>e.g. https://mywebsite.com/callback/jkdKo0Lp8lsdfjk4j0HJhskfak93d</code></p>\n<h2 id=\"74-payouts-apis\">7.4. Payouts APIs</h2>\n<p>Before you can use <strong>Payout APIs</strong>, you must first send the IP addresses of your servers to My-CoolPay by email (<a href=\"mailto:support@my-coolpay.com\">support@my-coolpay.com</a>). You can provide up to three (03) addresses. Any payout request coming from a server other than those you have specified will be automatically rejected.</p>\n<blockquote>\n<p><strong>📝 Note:</strong> However, during your API integration period, you can ask support to temporarily disable this firewall so that you can perform tests.</p>\n</blockquote>\n<h2 id=\"75-callback-requests-integrity\">7.5. Callback requests integrity</h2>\n<p>Before processing a callback request, it is essential to verify its origin and its integrity.<br />The checks to be done are the following (in order):</p>\n<ol>\n<li>Verify that the IP address from which the request is coming is that of the My-CoolPay server (<strong>15.236.140.89</strong>);</li>\n<li>Check the MD5 signature, calculate it yourself and compare it with the callback signature.</li>\n</ol>\n<p>If all the above checks give a positive result, then the request is authentic, respond with \"<strong>OK</strong>\". Otherwise respond with \"<strong>KO</strong>\".</p>\n","_postman_id":"0c4cf5ed-f0c6-4dea-bd2e-0b4a3dd03687"},{"name":"8. Sandbox (testing)","item":[],"id":"26f0f198-8104-48f6-9a30-1acdfd81f1bc","description":"<blockquote>\n<p>💔 We do not yet have a complete test environment. We are still working to provide one soon. Stay tuned. Nevertheless, you can use the following keys to test <a href=\"#c59ff2b8-8899-4f18-83b7-8e16e68c74a2\">Web APIs</a>, <a href=\"#2e8ee2c4-5bb7-4700-92b6-17bf6cdea9f9\">Mobile APIs</a> and <a href=\"#6db93261-46bc-4037-aceb-1c63e991e5c2\">Status check APIs</a>.</p>\n</blockquote>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>#</th>\n<th>Application</th>\n<th>Public key</th>\n<th>Private key</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>My-CoolPay Sandbox</td>\n<td>118a4852-7df8-46d9-834b-23b4ef25aaab</td>\n<td>[Hidden for security reasons]</td>\n</tr>\n<tr>\n<td>2</td>\n<td>...</td>\n<td>...</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"26f0f198-8104-48f6-9a30-1acdfd81f1bc"},{"name":"More assistance","item":[],"id":"2950919d-aa97-4817-a3b0-0fde320bdc48","description":"<p>ℹ️ If you need further information or assistance, our teams are available at <a href=\"mailto:support@my-coolpay.com\">support@my-coolpay.com</a>. You can also get help from the <a href=\"https://t.me/mycoolpay\">developer community 💬</a></p>\n","_postman_id":"2950919d-aa97-4817-a3b0-0fde320bdc48"},{"name":"Contributors","item":[],"id":"6d1159ce-d25f-495a-9eba-98cf8faf79e8","description":"<ul>\n<li><a href=\"https://www.digitalhouse-int.com/\">Digital House International</a></li>\n<li><a href=\"https://www.linkedin.com/in/willykouogang/\">Willy KOUOGANG</a></li>\n<li><a href=\"https://www.linkedin.com/in/samuel-bakon-gl/\">Samuel BAKON</a></li>\n<li><a href=\"https://www.linkedin.com/in/laetitia-ngomtcho-b1a312149/\">Laetitia NGOMTCHO</a></li>\n<li><a href=\"https://www.linkedin.com/in/arnold-ngassam-777022153/\">Arnold NGASSAM</a></li>\n<li><a href=\"https://www.linkedin.com/in/aristide-herve-mbassi-92197814a/\">Aristide Herve MBASSI</a></li>\n<li><a href=\"https://www.linkedin.com/in/aubry-yvan-fandom-82aa41108/\">Aubry Yvan FANDOM</a></li>\n</ul>\n","_postman_id":"6d1159ce-d25f-495a-9eba-98cf8faf79e8"}],"event":[{"listen":"prerequest","script":{"id":"113102fb-76be-4363-85b8-27344eeb07ff","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5e1ac83a-58c6-4992-90bd-eda6d07afd25","type":"text/javascript","exec":[""]}}]}