Language

Step 6: Check the status of your Send Money request

When the Send Money request is processed on your end, we will send the result to the callback URL you provided. Alternatively, you can check the status of a new transfer by using the location URL found in the Location header returned with the Send Money response.

POST https://your-callback-url.com/send_money_result
Accept: application/json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

...

{
  "data": {
    "id": "716481bc-635c-4d35-92c9-65bb0797196a",
    "type": "send_money",
    "attributes": {
      "status": "Processed",
      "created_at": "2025-09-23T20:05:46.522+03:00",
      "source_identifier": "4321",
      "destinations": [
        {
          "type": "mobile_wallet",
          "amount": 1000,
          "network": "Safaricom",
          "nickname": "Test",
          "favourite": true,
          "description": "Testing",
          "phone_number": "254900000000"
        },
        {
          "type": "mobile_wallet",
          "amount": 1000,
          "network": "Safaricom",
          "nickname": "Test",
          "favourite": true,
          "description": "Testing",
          "phone_number": "254900111111"
        }
      ],
      "currency": "KES",
      "transfer_batches": [
        {
          "status": "Transferred",
          "amount": "1000.0",
          "disbursements": [
            {
              "amount": "1000.0",
              "errors": null,
              "status": "Transferred",
              "nickname": "Test",
              "favourite": true,
              "phone_number": "254900111111",
              "destination_type": "mobile_wallet",
              "origination_time": "2025-09-23T20:22:59.913+03:00",
              "destination_reference": "a3bd6298-8a5a-4a93-b880-7948a621fdfb",
              "transaction_reference": "QCL160124A7"
            }
          ]
        },
        {
          "status": "Transferred",
          "amount": "1000.0",
          "disbursements": [
            {
              "amount": "1000.0",
              "errors": null,
              "status": "Transferred",
              "nickname": "Test",
              "favourite": true,
              "phone_number": "254900000000",
              "destination_type": "mobile_wallet",
              "origination_time": "2025-09-23T20:26:49.173+03:00",
              "destination_reference": "5f58ce16-0320-4da8-ad38-0f2cf7f520f2",
              "transaction_reference": "QDZ273694C8"
            }
          ]
        }
      ],
      "errors": null,
      "metadata": {
        "notes": "Salary payment for September 2025",
        "customerId": "8675309"
      },
      "_links": {
        "callback_url": "https://webhook.site/f0b07170-4397-4e81-b552-a6bc0fc20ed9",
        "self": "https://api.kopokopo.com/api/v2/send_money/716481bc-635c-4d35-92c9-65bb0797196a"
      }
    }
  }
}
your_input = {
  destination_type: "bank_account",
  destination_reference: "c7f300c0-f1ef-4151-9bbe-005005aa3747",
  currency: "KES",
  value: 20000,
  description: "Salary payment for May 2018",
  category: "salaries",
  tags: ["tag 1", "tag 2"],
  metadata: {
    customer_id: "8675309",
    notes: "Salary payment for May 2018"
  },
  callback_url: "https://dummy_callback_url/payment_result"
}

# Using K2Connect - https://github.com/kopokpo/k2-connect-ruby (Recommended)
k2_pay = K2Pay.new('your_access_token')
k2_pay.create_payment(your_input)
k2_pay.payments_location_url # => "https://sandbox.kopokopo.com/api/v2/send_money/d76265cd-0951-e511-80da-0aa34a9b2388"
<?
// Using KopoKopoConnect - https://github.com/kopokopo/k2-connect-php (Recommended
$sendMoneyService = $K2->SendMoneyService();

$sendMoneyRequest = [
  "destinations" => [
    [
      "type" => "merchant_wallet",
      "amount" => 1000,
      "reference" => "af033d43-75f7-4123-b5c3-252377d96739"
    ]
  ],
  "currency" => "KES",
  "callbackUrl" => "https://dummy_callback_url/send_money_result",
  "accessToken" => "myRand0mAcc3ssT0k3n"
];

# Initiate a send money request
$response = $sendMoneyService->sendMoney($sendMoneyRequest);
$locationUrl = $response["location"]; # https://sandbox.kopokopo.com/api/v2/send_money/f8c02eb2-c35e-42f6-8835-18074f3ca6a7

# Get the status of your send money request
$sendMoneyStatusResponse = $sendMoneyService->getStatus([
  "accessToken" => "myRand0mAcc3ssT0k3n",
  "location" => $locationUrl,
]);
print_r($sendMoneyStatusResponse["data"]);
import k2connect
payment_request = {
  "destinations": [
    {
      "type": "merchant_wallet",
      "reference": "af033d43-75f7-4123-b5c3-252377d96739",
      "amount": 1000,
    }],
  "currency": "KES",
  "callback_url": "https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d"
}

# Using k2-connect - https://github.com/kopokopo/k2-connect-python (Recommended)
send_money_service = k2connect.SendMoney
send_money_location = send_money_service.create_payment(payment_request)
send_money_location  # => 'https://sandbox.kopokopo.com/api/v2/send_money/d76265cd-0951-e511-80da-0aa34a9b2388'
//  Using Kopo Kopo Connect - https://github.com/kopokopo/k2-connect-node (Recommended)
const K2 = require('k2-connect');
const SendMoneyService = K2.SendMoneyService;
const transferUrl = 'https://sandbox.kopokopo.com/api/v2/send_money/d76265cd-0951-e511-80da-0aa34a9b2388'

SendMoneyService
  .getStatus({ accessToken: 'myRand0mAcc3ssT0k3n', location: transferUrl })
  .then(response => {
    console.log(response)
  })
  .catch(error => {
    console.log(error)
  })
// Not Supported
// This feature is not currently available in the Flutter SDK.
// Please use one of the other SDKs (PHP, Ruby, Python, NodeJs) or the REST API.

That’s it! You’ve successfully transferred money from Joe Buyer to Jane Merchant. Please continue to the Webhooks guide for information on implementing notifications for your customers about the transfer.