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
| Attribute | Type | Description |
|---|---|---|
id | string | Unique identifier |
object | string | Always "recipient" |
name | string | Recipient's name |
email | string | Recipient's email |
phone | string | Recipient's phone number |
description | string | Description or notes |
account | object | Account details |
account.type | string | mobile_money or bank_transfer |
account.number | string | Masked account/phone number |
account.name | string | Account holder name |
account.provider | string | Provider (mobile money) |
account.bank_code | string | Bank code (bank transfer) |
status | string | active, inactive |
is_verified | boolean | Whether account is verified |
metadata | object | Custom metadata |
created_at | string | Creation timestamp |
Create a Recipient
Creates a new saved recipient.
POST /v1/recipientsRequest Body
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Recipient's name |
email | string | No | Recipient's email |
phone | string | No | Recipient's phone number |
description | string | No | Description or notes |
account | object | Yes | Account details |
account.type | string | Yes | mobile_money or bank_transfer |
account.phone_number | string | Yes* | Phone number (mobile money) |
account.provider | string | No | Provider code (auto-detected) |
account.account_number | string | Yes* | Account number (bank transfer) |
account.bank_code | string | Yes* | Bank code (bank transfer) |
account.account_name | string | No | Account holder name |
metadata | object | No | Custom 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
| Provider | Code | Phone Prefixes |
|---|---|---|
| MTN Mobile Money | mtn | 024, 025, 053, 054, 055, 059 |
| Telecel Cash | telecel | 020, 050 |
| AirtelTigo Money | airteltigo | 026, 027, 056, 057 |
Banks
| Bank | Code |
|---|---|
| Ghana Commercial Bank | GCB |
| Ecobank Ghana | ECO |
| Stanbic Bank | SBG |
| Standard Chartered | SCB |
| Absa Bank | ABSA |
| Fidelity Bank | FBN |
| CalBank | CAL |
| Access Bank | ABG |
| UBA Ghana | UBA |
| Zenith Bank | ZBG |
Contact support for the complete list of supported banks.
Retrieve a Recipient
Retrieves a recipient by ID.
GET /v1/recipients/:idcurl 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/:idRequest Body
| Parameter | Type | Description |
|---|---|---|
name | string | Recipient's name |
email | string | Recipient's email |
phone | string | Recipient's phone |
description | string | Description or notes |
account | object | Account details (can update) |
metadata | object | Custom 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/:idcurl -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/recipientsQuery Parameters
| Parameter | Type | Description |
|---|---|---|
limit | integer | Number of results (1-100) |
starting_after | string | Cursor for pagination |
status | string | Filter 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 }
})