Recipients

Create and manage saved payout recipients.

Recipients API

Recipients allow you to save external account details (mobile money wallets or bank accounts) for future payouts. This is useful for recurring payments to the same accounts.

Recipients are optional. You can also send payouts directly by specifying the destination details inline. See the Payouts API for direct transfers.

The Recipient Object

{
  "id": "rcp_abc123def456",
  "object": "recipient",
  "name": "John Doe",
  "email": "john@example.com",
  "phone": "0241234567",
  "description": "Employee - Marketing",
  "account": {
    "type": "mobile_money",
    "number": "024****567",
    "name": "John Doe",
    "provider": "mtn"
  },
  "status": "active",
  "is_verified": false,
  "metadata": {
    "employee_id": "123"
  },
  "created_at": "2024-01-15T10:00:00Z"
}

Attributes

AttributeTypeDescription
idstringUnique identifier
objectstringAlways "recipient"
namestringRecipient's name
emailstringRecipient's email
phonestringRecipient's phone number
descriptionstringDescription or notes
accountobjectAccount details
account.typestringmobile_money or bank_transfer
account.numberstringMasked account/phone number
account.namestringAccount holder name
account.providerstringProvider (mobile money)
account.bank_codestringBank code (bank transfer)
statusstringactive, inactive
is_verifiedbooleanWhether account is verified
metadataobjectCustom metadata
created_atstringCreation timestamp

Create a Recipient

Creates a new saved recipient.

POST /v1/recipients

Request Body

ParameterTypeRequiredDescription
namestringYesRecipient's name
emailstringNoRecipient's email
phonestringNoRecipient's phone number
descriptionstringNoDescription or notes
accountobjectYesAccount details
account.typestringYesmobile_money or bank_transfer
account.phone_numberstringYes*Phone number (mobile money)
account.providerstringNoProvider code (auto-detected)
account.account_numberstringYes*Account number (bank transfer)
account.bank_codestringYes*Bank code (bank transfer)
account.account_namestringNoAccount holder name
metadataobjectNoCustom metadata

Mobile Money Recipient

curl -X POST https://api.shikacreators.com/v1/recipients \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "account": {
      "type": "mobile_money",
      "phone_number": "0241234567",
      "account_name": "John Doe"
    },
    "email": "john@example.com",
    "metadata": {
      "employee_id": "123"
    }
  }'
const recipient = await shikacreators.recipients.create({
  name: 'John Doe',
  account: {
    type: 'mobile_money',
    phone_number: '0241234567',
    account_name: 'John Doe'
  },
  email: 'john@example.com',
  metadata: {
    employee_id: '123'
  }
})
recipient = client.recipients.create(
    name='John Doe',
    account={
        'type': 'mobile_money',
        'phone_number': '0241234567',
        'account_name': 'John Doe'
    },
    email='john@example.com',
    metadata={'employee_id': '123'}
)
$recipient = $shikacreators->recipients->create([
    'name' => 'John Doe',
    'account' => [
        'type' => 'mobile_money',
        'phone_number' => '0241234567',
        'account_name' => 'John Doe'
    ],
    'email' => 'john@example.com',
    'metadata' => ['employee_id' => '123']
]);

Bank Account Recipient

curl -X POST https://api.shikacreators.com/v1/recipients \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "account": {
      "type": "bank_transfer",
      "bank_code": "GCB",
      "account_number": "1234567890",
      "account_name": "John Doe"
    },
    "email": "john@example.com"
  }'
const recipient = await shikacreators.recipients.create({
  name: 'John Doe',
  account: {
    type: 'bank_transfer',
    bank_code: 'GCB',
    account_number: '1234567890',
    account_name: 'John Doe'
  },
  email: 'john@example.com'
})
recipient = client.recipients.create(
    name='John Doe',
    account={
        'type': 'bank_transfer',
        'bank_code': 'GCB',
        'account_number': '1234567890',
        'account_name': 'John Doe'
    },
    email='john@example.com'
)

Supported Providers

Mobile Money

ProviderCodePhone Prefixes
MTN Mobile Moneymtn024, 025, 053, 054, 055, 059
Telecel Cashtelecel020, 050
AirtelTigo Moneyairteltigo026, 027, 056, 057

Banks

BankCode
Ghana Commercial BankGCB
Ecobank GhanaECO
Stanbic BankSBG
Standard CharteredSCB
Absa BankABSA
Fidelity BankFBN
CalBankCAL
Access BankABG
UBA GhanaUBA
Zenith BankZBG

Contact support for the complete list of supported banks.


Retrieve a Recipient

Retrieves a recipient by ID.

GET /v1/recipients/:id
curl https://api.shikacreators.com/v1/recipients/rcp_abc123def456 \
  -H "Authorization: Bearer sk_test_..."
const recipient = await shikacreators.recipients.retrieve('rcp_abc123def456')
recipient = client.recipients.retrieve('rcp_abc123def456')

Update a Recipient

Updates a recipient's details.

PATCH /v1/recipients/:id

Request Body

ParameterTypeDescription
namestringRecipient's name
emailstringRecipient's email
phonestringRecipient's phone
descriptionstringDescription or notes
accountobjectAccount details (can update)
metadataobjectCustom metadata
curl -X PATCH https://api.shikacreators.com/v1/recipients/rcp_abc123def456 \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Jane Doe",
    "metadata": {
      "employee_id": "456"
    }
  }'
const recipient = await shikacreators.recipients.update('rcp_abc123def456', {
  name: 'Jane Doe',
  metadata: {
    employee_id: '456'
  }
})
recipient = client.recipients.update('rcp_abc123def456',
    name='Jane Doe',
    metadata={'employee_id': '456'}
)

Delete a Recipient

Deletes a recipient.

DELETE /v1/recipients/:id
curl -X DELETE https://api.shikacreators.com/v1/recipients/rcp_abc123def456 \
  -H "Authorization: Bearer sk_test_..."
await shikacreators.recipients.delete('rcp_abc123def456')
client.recipients.delete('rcp_abc123def456')

Response

{
  "id": "rcp_abc123def456",
  "object": "recipient",
  "deleted": true
}

List Recipients

Returns a list of recipients.

GET /v1/recipients

Query Parameters

ParameterTypeDescription
limitintegerNumber of results (1-100)
starting_afterstringCursor for pagination
statusstringFilter by status (active, inactive)
curl "https://api.shikacreators.com/v1/recipients?limit=10" \
  -H "Authorization: Bearer sk_test_..."
const recipients = await shikacreators.recipients.list({
  limit: 10
})
recipients = client.recipients.list(limit=10)

Response

{
  "object": "list",
  "data": [
    {
      "id": "rcp_abc123def456",
      "object": "recipient",
      "name": "John Doe",
      ...
    }
  ],
  "has_more": true,
  "url": "/v1/recipients"
}

Use Case: Recurring Payouts

Recipients are ideal for recurring payments like salaries or vendor payments:

// 1. Create recipients once
const employee = await shikacreators.recipients.create({
  name: 'John Doe',
  account: {
    type: 'mobile_money',
    phone_number: '0241234567'
  },
  metadata: { employee_id: 'EMP001' }
})

// 2. Get recipient details when sending payout
const recipient = await shikacreators.recipients.retrieve(employee.id)

// 3. Send payout using the saved details
// Note: Currently, payouts require inline destination details
const payout = await shikacreators.payouts.create({
  amount: 500,
  destination: {
    type: 'mobile_money',
    phone_number: '0241234567', // Use from recipient.account
    account_name: 'John Doe'
  },
  otp_code: '123456',
  description: 'Monthly salary',
  metadata: { recipient_id: employee.id }
})