Transfer Customer Points

Transfers points from one customer account to another customer account by validating the OTP issued for the points transfer.

  • Rate limiter controls the number of incoming and outgoing traffic of a network
  • Authentication verifies the identity of the current user or integration. See Introduction > Authentication (Merchant Setup on Admin Portal) for more details.

Body Parameter

Parameter

Type

Description

pointsToBeTransferred

Integer

Number of points to be transferred.

programId

Integer

Program ID from which points has to be transferred.

fromCustomerIdentifier

Object

Details of source customer - customer that wants to transfer points.

toCustomerIdentifier

Object

Details of destination customer - customer to whom the points have to be transferred.

type

String

Customer identifier type. Values: ID (user id of the customer), MOBILE, EXTERNAL_ID, EMAIL.

value

String

The value of the specified identifier.

groupProgramTransfer

Boolean

Indicates whether the transfer is part of a group program. (true/false)

code

String

Pass the OTP received by the fromCustomer for the current points transfer. To issue OTP, use either /isPointsTransferreable or /issuePointsTransferOtp. This is not mandatory is required only if you have set issueOtp to true in this API .

curl --location 'https://eu.api.capillarytech.com/v2/points/transfer' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic ********' \
--header 'Cookie: _cfuvid=imSiYfMutGN8wGrfx8333HEATybeT6uGh8RPFWFDg6s-1760698549507-0.0.1.1-604800000' \
--data '{ 
   "pointsTobeTransferred":1, 
   "groupProgramTransfer": "false",
   "programId": 973,
    "fromCustomerIdentifier": {
        "type": "MOBILE",
        "value": "9777785206"
    },
    "toCustomerIdentifier": {
        "type": "MOBILE",
        "value": "9777785207"
    }
   }'

Response Parameter

Parameter

Type

Description

data

Array

List of transfer records returned

toEntityId

Integer

Unique ID of the recipient customer

toEntityType

String

Type of recipient entity

fromEntityId

Integer

Unique ID of the sender customer

fromEntityType

String

Type of sender entity

pointsTransferDate

String

Timestamp when transfer occurred in format: YYYY-MM-DD HH:MM:SS

pointsTransferDateISO

String

Timestamp when transfer occurred in ISO 8601 format. Format: YYYY-MM-DDTHH:mm:ssZ

pointsTransferred

Float

Total number of points transferred

transferId

Integer

Unique transaction ID for this transfer

transferType

String

Transfer operation type (e.g: "DEDUCTION" for sender side)

-transferredFrom

Object

Details about the sender

-userId

Integer

Sender's user ID

-firstName

String

Sender's first name

-lastName

String

Sender's last name

transferredTo

Object

Details about the recipient

-userId

Integer

Recipient's user ID

-firstName

String

Recipient's first name

-lastName

String

Recipient's last name

-notes

String

Additional notes about the transfer

-programName

String

Name of the loyalty program used

pointsTransferBreakupByEarningPrograms

Object

Breakdown of points by sub-program

-programId

Integer

ID of the earning sub-program

-deductedPoints

Float

Points deducted from this program

-programCurrentPoints

Integer

Remaining points balance in this program

warnings

Array

List of non-critical warnings (if any)

errors

Array

List of errors if transfer failed (empty on success)

{
    "data": [
        {
            "toEntityId": 565039506,
            "toEntityType": "CUSTOMER",
            "fromEntityId": 565039505,
            "fromEntityType": "CUSTOMER",
            "pointsTransferDate": "2025-06-02 07:24:58",
            "pointsTransferred": 2000.0,
            "transferId": 1037890,
            "transferType": "DEDUCTION",
            "transferredFrom": {
                "userId": 565039505,
                "firstName": "",
                "lastName": ""
            },
            "transferredTo": {
                "userId": 565039506,
                "firstName": "Tom",
                "lastName": "Sawyer"
            },
            "notes": "",
            "programName": "DocDemoDefaultProgram",
            "pointsTransferBreakupByEarningPrograms": [
                {
                    "programId": 973,
                    "deductedPoints": 1000.000,
                    "programCurrentPoints": 7500
                }
            ]
        }
    ],
    "warnings": [],
    "errors": []
}
{
    "warnings": [],
    "errors": [
        {
            "status": false,
            "code": 422,
            "message": "pointsToBeTransferred value is invalid"
        }
    ]
}
{
    "warnings": [],
    "errors": [
        {
            "status": false,
            "code": 434,
            "message": "Invalid transferredBy.identifierValue set in the request payload"
        }
    ]
}
{
    "warnings": [],
    "errors": [
        {
            "status": false,
            "code": 434,
            "message": "Invalid fromEntity.identifierType set in the request payload"
        }
    ]
}
{
    "data": [
        {
            "toEntityId": 564955411,
            "toEntityType": "CUSTOMER",
            "fromEntityId": 564955302,
            "fromEntityType": "CUSTOMER",
            "pointsTransferDate": "2025-10-17 10:55:49",
            "pointsTransferDateISO": "2025-10-17T10:55:49Z",
            "pointsTransferred": 2.0,
            "transferId": 1041106,
            "transferType": "DEDUCTION",
            "transferredFrom": {
                "userId": 564955302,
                "firstName": "",
                "lastName": ""
            },
            "transferredTo": {
                "userId": 564955411,
                "firstName": "testgrp5",
                "lastName": "testgrpv2"
            },
            "notes": "",
            "programName": "DocDemoDefaultProgram",
            "pointsTransferBreakupByEarningPrograms": [
                {
                    "programId": 973,
                    "deductedPoints": 1.000,
                    "programCurrentPoints": 496
                }
            ]
        }
    ],
    "warnings": [],
    "errors": []
}

API specific error code

Error CodeDescriptionReason
3316Group redemption action executed for non-group payloadThe groupProgramTransfer parameter is set to "true" but the identifier belongs to a non-group entity.
807Redemption points not divisibleOnly whole numbers greater than 0 are valid in the pointsToBeTransferred parameter. Decimal values are not supported.
885Invalid program IDInvalid or missing programId.
8013Invalid identifier typeInvalid or missing type in fromCustomerIdentifier or toCustomerIdentifier parameter.
8015Customer not found for the given identifierInvalid or missing value in fromCustomerIdentifier or toCustomerIdentifier parameter.
422pointsToBeTransferred field is missingValue provided in pointsToBeTransferred field is missing or invalid.
434Invalid transferredBy.identifierValueThe value provided in the value parameter is invalid.
434Invalid fromEntity.identifierTypeThe value provided in the identifierType parameter is invalid.
804Unable to process points transfer requestGeneral processing failure due to system or validation error.
817Redemption failed due to insufficient points or configurationCustomer does not have enough points or redemption is restricted for this configuration.
818Points transfer not allowed for the specified programThe program does not support point transfer operations.
827Unable to redeem points. Points redemption is enabled for your organization.Redemption failed due to temporary or unexpected processing issues. Please try later.
886Points transfer failed due to temporary system errorInternal failure, please try again later.
887Points transfer failed due to validation errorParameter or data validation failed, please verify your request.
888Invalid configuration detectedConfiguration is invalid. No eligible consumers or listeners are configured. Please report to Capillary Support.
896Points transfer could not be processedTemporary failure, please try again later.
898Points transfer currently unavailableService temporarily unavailable, please retry later.
899Misconfigured program setupConfiguration issue detected. The loyalty program configuration is invalid. Please report to Capillary Support.
901*(Error code) Customer not eligible for points transferCustomer eligibility criteria not met.
902*(Error code) Duplicate points transfer requestDuplicate or conflicting transfer detected.
903*(Error code) Redemption limit exceededCustomer has reached the allowed redemption or transfer limit. The operation did not complete.
904*(Error code) Points transfer locked for the customerTransfers are temporarily locked for this customer account.

API Specific Warning Code

Warning CodeDescription
901Invalid points or points redemption ID.
902Redemption ID does not exist.
903Unable to redeem points.
904Invalid customer details passed.
Language
Credentials
Basic
base64
:
URL
Click Try It! to start a request and see the response here!