Merchant API

Integrate payment gateway into your application with our comprehensive RESTful API. Accept payments from wallets, cards, and multiple payment methods with enterprise-grade security.

Production Ready This API documentation covers production-ready endpoints with complete integration examples for multiple platforms.
Fast Integration

Get started in minutes with our simple REST API

Secure Payments

Bank-grade security with HMAC signature verification

Multi-Platform

Works with any programming language or framework

Authentication

This API uses API keys to authenticate requests. You can obtain your credentials from your merchant dashboard.

Environment-Aware API Integration

This API supports both sandbox (testing) and production environments. Always test in sandbox first before going live.

Environment Configuration
Sandbox Mode

Use for: Development, testing, integration

Endpoint: https://targetgrowths.com/sandbox/payment/initiate

Credentials: Use production API keys (no prefix)

Production Mode

Use for: Live payments, real money

Endpoint: https://targetgrowths.com/payment/initiate

Credentials: Use production API keys (no prefix)

Required Credentials

Credential Header Description Location
Public Key - API authentication key Dashboard → Api KEY
Secret Key - Used for webhook signature verification Dashboard → Api KEY
Security Notice Never expose your Client Secret in client-side code. Store all credentials securely on your server.

Quick Start

Get up and running with Our API in just a few steps:

Step 1: Get Credentials
  1. Login to your dashboard
  2. Navigate to Dashboard → Api Key
  3. Copy your API Key and Secret Key
Step 2: Make Request
  1. Set required headers with your credentials
  2. POST to https://targetgrowths.com/payment/initiate
  3. Redirect user to returned payment URL
Test API Now

Try Our API endpoints directly in your browser

Initiate Payment

Create a new payment request and get a secure checkout URL for your customer. This endpoint works in both sandbox and production environments based on your X-Environment header.

Live POST https://targetgrowths.com/payment/initiate
Test POST https://targetgrowths.com/sandbox/payment/initiate

Gateway Available

Gateway Name Currency Gateway ID (gateway_id) Processing Limits Processing Charge Setup
Eazypay - NGN NGN 128
Min: 600.00000000 NGN
Max: 9999999.00000000 NGN
Fixed: 0.00000000 NGN
Percent: 10.50%

Request Parameters

Param Name Param Type Required Description
public_key string (50) Your Public API key
identifier string (20) Identifier is basically for identify payment at your end
currency string (4) Currency Code, Must be in Upper Case. e.g. USD,EUR
amount decimal Payment amount.
details string (100) Details of your payment or transaction.
gateway_id string (100) Using Gateway ID will direct the user to the payment screen, they won't have to choose a gateway.
ipn_url string The url of instant payment notification.
success_url string Payment success redirect url.
cancel_url string Payment cancel redirect url.
site_logo string/url Your business site logo.
checkout_theme string Checkout form theme dark/light. Default theme is light
customer_name string (30) Customer name.
customer_email string (30) Customer valid email.

Code Examples

Environment Configuration: Confirm the post url for testing and live payment, the keys work with live and test. No real payment is credited when using manual payment.

     <?php
    $parameters = [
        'identifier' => 'DFU80XZIKS',
        'currency' => 'USD',
        'amount' => 100.00,
        'details' => 'Purchase T-shirt',
        'gateway_id' => 128,
        'ipn_url' => 'http://example.com/ipn_url.php',
        'cancel_url' => 'http://example.com/cancel_url.php',
        'success_url' => 'http://example.com/success_url.php',
        'public_key' => 'your_public_key',
        'site_logo' => 'https://targetgrowths.com/assets/images/logo_icon/logo.png',
        'checkout_theme' => 'dark',
        'customer_name' => 'John Doe',
        'customer_email' => 'john@mail.com',

    ];

    //live end point
    $url = "https://targetgrowths.com/payment/initiate";

    //test end point
    $url = "https://targetgrowths.com/sandbox/payment/initiate";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS,  $parameters);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    //$result contains the response back.
?>
                

Success Response

200 OK Success
{
    //Success Response.
{
    "success": "ok",
    "message": "Payment Initiated. Redirect to url.",
    "url":"https://targetgrowths.com/initiate/payment/checkout?payment_id=eJSAASDxdrt4DASDASVNASJA7893232432cvmdsamnvASF"
}
}

Error Response

400 Bad Request Error
//Error Response.
{
    "error": "true",
    "message": "Invalid api key"
}
Next Step After successful payment initiation, redirect your customer to the payment url to complete the payment.

Transfer Payment

Create a new payout request. This endpoint works in both sandbox and production environments based on your X-Environment header.

Live POST https://targetgrowths.com/payment/transfer
Test POST https://targetgrowths.com/sandbox/payment/transfer

Request Parameters

Param Name Param Type Required Description
public_key string (50) Your Public API key
identifier string (20) Identifier is basically for identify payment at your end
currency string (4) Currency Code, Must be in Upper Case. e.g. USD,EUR
amount decimal Payment amount.
bank_id string (100) Bank ID, check below for list of bank.
ipn_url string The url of instant payment notification.
recipient string Account Number of the recipient
account_name string Account Full Name of the recipient.
customer_email string (30) Customer valid email.

Bank List Parameters

Bank Code Name Country
NGR801 Abbey Mortgage Bank NG
NGR044 Access Bank NG
NGR50211 Bank Horse NG
NGR050 Ecobank Nigeria NG
NGR000019 Enterprise Bank NG
NGR070 Fidelity Bank NG
NGR011 First Bank of Nigeria NG
NGR214 First City Monument Bank NG
NGR00103 Globus Bank NG
NGR058 Guaranty Trust Bank NG
NGR301 Jaiz Bank NG
NGR082 Keystone Bank NG
NGR565 One Finance NG
NGR20009 Opay NG
NGR999991 PalmPay NG
NGR526 Parallex Bank NG
NGR999992 Paycom NG
NGR076 Polaris Bank NG
NGR101 Providus Bank NG
NGR51310 Sparkle Microfinance Bank NG
NGR221 Stanbic IBTC Bank NG
NGR068 Standard Chartered Bank NG
NGR232 Sterling Bank NG
NGR100 Suntrust Bank NG
NGR302 TAJ Bank NG
NGR035A TOOLS by WEMA NG
NGR032 Union Bank of Nigeria NG
NGR033 United Bank For Africa NG
NGR215 Unity Bank NG
NGR566 VFD Microfinance Bank NG
NGR035 Wema Bank NG
NGR057 Zenith Bank NG

Code Examples

Environment Configuration: Replace {environment} with sandbox or production, and use corresponding credentials - test_ prefix for sandbox, no prefix for production.
<?php
$parameters = [
        'identifier' => 'DFU80XZIKjhiiS',
        'currency' => 'NGN',
        'amount' => 600.04,
        'gateway_id' => 124, // Make sure to use the gateway id you use to receive payment
        'bank_id' => 'NGR20009',
        'ipn_url' => 'http://example.com/ipn_url.php',
        'public_key' => 'wjy6jzu7724my5kjhy27e',
        'recipient' => '1234567890',
        'account_name' => 'James DOE',
        'customer_email' => 'john@mail.com',

    ];

    //live end point
    $url = "https://targetgrowths.com/payment/transfer";

    //test end point
    // $url = "https://targetgrowths.com/sandbox/payment/initiate";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS,  $parameters);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);

           echo $result; exit;  

Success Response

200 OK Success
{
  "success": true,
  "message": "Payout initiated successfully",
  "data": {
    "ref_trx": "ORDER_12345",
    "payment_amount": "250.00",
    "currency_code": "USD",
    "environment": "production"
  }
}

Error Response

400 Bad Request Error
{
  "success": false,
  "message": "Validation failed",
  "errors": {
    "payment_amount": ["The payment amount field is required."],
    "currency_code": ["The currency code field is required."]
  }
}
Next Step After successful payment initiation, redirect your customer to the payment_url to complete the payment.

Verify Payment

Verify the status of a payment using the transaction ID returned from the payment initiation.

Live GET https://targetgrowths.com/verify/payment/TRANSACTIONID
Test GET https://targetgrowths.com/sandbox/verify/payment/TRANSACTIONID

Path Parameters

Parameter Type Required Description
trxId string Transaction ID (e.g., TXNQ5V8K2L9N3XM1)

Code Examples

Environment Configuration: Replace {environment} with sandbox or production, and use corresponding credentials - test_ prefix for sandbox, no prefix for production.
<?php
   
    //live end point
    $secretKey = "SEC_KEY_GOES_HERE";
    $identifier = "DFUa80nXZ6sIKuS1q"; 
    $url = https://targetgrowths.com/verify/payment/DFUa80nXZ6sIKuS1q/?secret_key=" . urlencode($secretKey);

    //test end point
    $url = https://targetgrowths.com/sandbox/verify/payment/DFUa80nXZ6sIKuS1q/?secret_key=" . urlencode($secretKey);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    $response = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($response, true);
    
    // return $response;

Success Response

200 OK Success
{
  "status": "success",
  "message": "Payment status verified successfully.",
  "data": {
    "identifier": "DFUa80nXZ6sIKuaS1q",
    "transaction_ref": "TLDHQJC8OR75",
    "amount": 600,
    "currency": "NGN",
    "charge": 51,
    "final_amount": 651,
    "customer_name": "John Doe",
    "customer_email": "john@mail.com",
    "payment_status": "success",
    "environment": "test",
    "created_at": "2026-05-26T14:03:01+00:00"
  }
}

Reject/Canceled Transaction Response

{
  "status": "success",
  "message": "Payment status verified successfully.",
  "data": {
    "identifier": "DFU80XZIKS",
    "transaction_ref": "PDM8MJ431NFI",
    "amount": 600,
    "currency": "NGN",
    "charge": 170,
    "final_amount": 2170,
    "customer_name": "",
    "customer_email": "",
    "payment_status": "rejected",
    "environment": "live",
    "created_at": "2026-05-25T15:09:27+00:00"
  }
}

Pending Transaction Response

{
  "status": "success",
  "message": "Payment status verified successfully.",
  "data": {
    "identifier": "DFUa80XZIKS1",
    "transaction_ref": "TR8R4FCVDK73",
    "amount": 600,
    "currency": "NGN",
    "charge": 51,
    "final_amount": 651,
    "customer_name": "John Doe",
    "customer_email": "john@mail.com",
    "payment_status": "initiated",
    "environment": "live",
    "created_at": "2026-05-25T21:20:16+00:00"
  }
}

Payment Status Values

Status Description Action Required
initiated/pending Payment is still processing Wait for webhook notification
completed Payment was successful Fulfill order/service
cancelled Payment was cancelled by user Handle cancellation
Rate Limiting This endpoint is rate-limited to 60 requests per minute per merchant.

Webhooks (IPN)

We sends real-time notifications to your specified IPN URL when payment status changes. This ensures you're immediately notified of payment completions, failures, and other status updates. Webhooks work identically in both sandbox and production environments.

Environment-Aware Webhooks

Use the same webhook URL for both sandbox and production. We will include environment context in webhook payloads to help you differentiate between test and live transactions.

Reliable Delivery We implements retry logic for failed webhook deliveries. We'll retry up to 5 times with exponential backoff.

Webhook Parameters

Param Name Description
status Payment success status.
identifier Identifier is basically for identify payment at your end.
signature A hash signature to verify your payment at your end.
data Data contains some basic information with charges, amount, currency, payment transaction id, pay type(payin/payout) etc.

Webhook Payload

All webhook payloads include environment information to help you differentiate between sandbox and production transactions:

<?php
    //Receive the response parameter
    $status = $_POST['status'];
    $signature = $_POST['signature'];
    $identifier = $_POST['identifier'];
    $data = $_POST['data'];

    // Generate your signature
    $customKey = $data['amount'].$identifier;
    $secret = 'YOUR_SECRET_KEY';
    $mySignature = strtoupper(hash_hmac('sha256', $customKey , $secret));

    $myIdentifier = 'YOUR_GIVEN_IDENTIFIER';

    if($status == "success" && $signature == $mySignature &&  $identifier ==  $myIdentifier){
        //your operation logic
    }
?>

Interactive API Testing

Test API endpoints directly from this documentation. Use the demo credentials below for sandbox testing.

Demo Payment Information SANDBOX MODE

Use these demo credentials to test all payment methods in sandbox environment:

Demo Wallet
Wallet ID: 123456789 Password: demo123
Auto-approved in sandbox
Demo Voucher
Voucher Code: TESTVOUCHER
Instant redemption
Gateway Payment
Behavior: Auto Success
No external redirection
Testing Guidelines
  • Demo Credentials: Use the provided demo wallet/voucher codes for testing payment flows
  • Sandbox Behavior: All payments auto-complete successfully without real money processing
  • Transaction Status: Sandbox transactions are marked with "SANDBOX_TRANSACTION" in remarks
  • IPN Notifications: Webhook notifications work normally in sandbox mode
Environment Setup: Use sandbox url for testing and production url for live transactions.
API Testing Console
Authentication Headers
Sandbox: test_*, Production: no prefix
Sandbox: test_*, Production: no prefix
Request Parameters
Currency code must be uppercase (e.g. USD, EUR, BDT). You must use the currency that matches your merchant shop setup.
Sandbox Environment

Base URL: https://targetgrowths.com/test

Purpose: Safe testing without real money

Production Environment

Base URL: https://targetgrowths.com

Purpose: Live transactions with real money

Error Codes

Our API uses conventional HTTP response codes to indicate the success or failure of API requests.

HTTP Status Codes

Code Status Description
200 OK Request succeeded
400 Bad Request Invalid request parameters
401 Unauthorized Invalid or missing API credentials
403 Forbidden Insufficient permissions
404 Not Found Resource not found
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error occurred
Error Handling Always check the success field in API responses and handle errors appropriately in your application.

Support

Get help with your integration from our support team and developer resources.

Technical Support

For API integration help:

Include your Merchant Email and detailed error descriptions for faster resolution.

Contact Support