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 .

{
   "pointsTobeTransferred":1000,
   "groupProgramTransfer": "false",
   "programId": 973,
    "fromCustomerIdentifier": {
        "type": "MOBILE",
        "value": "9148574269"
    },
    "toCustomerIdentifier": {
        "type": "ID",
        "value": "565039506"
    }
}

Response Parameter

ParameterTypeDescription
toEntityIdIntegerUnique ID of the recipient customer
toEntityTypeStringType of recipient entity
fromEntityIdIntegerUnique ID of the sender customer
fromEntityTypeStringType of sender entity
pointsTransferDateStringTimestamp when transfer occurred in format: YYYY-MM-DD HH:MM:SS
pointsTransferredFloatTotal number of points transferred
transferIdIntegerUnique transaction ID for this transfer
transferTypeStringTransfer operation type (e.g: "DEDUCTION" for sender side)
-transferredFromObjectDetails about the sender
-userIdIntegerSender's user ID
-firstNameStringSender's first name
-lastNameStringSender's last name
transferredToObjectDetails about the recipient
-userIdIntegerRecipient's user ID
-firstNameStringRecipient's first name
-lastNameStringRecipient's last name
-notesStringAdditional notes about the transfer
-programNameStringName of the loyalty program used
pointsTransferBreakupByEarningProgramsObjectBreakdown of points by sub-program
-programIdIntegerID of the earning sub-program
-deductedPointsFloatPoints deducted from this program
-programCurrentPointsIntegerRemaining points balance in this program
warningsArrayList of non-critical warnings (if any)
errorsArrayList 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": "Madhurima",
                "lastName": "Basak"
            },
            "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"
        }
    ]
}

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 are valid in the pointsToBeTransferred parameter.
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 conditions not met despite program-level enablement.
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. 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. 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.
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!