Transfer Customer Points

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
  • 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

ParameterTypeDescription
pointsToBeTransferredIntegerNumber of points to be transferred.
programIdIntegerProgram ID from which points has to be transferred.
fromCustomerIdentifierObjectDetails of source customer - customer that wants to transfer points.
toCustomerIdentifierObjectDetails of destination customer - customer to whom the points have to be transferred.
typeStringCustomer identifier type.
Values: ID (user id of the customer), MOBILE, EXTERNAL_ID, EMAIL.
valueStringThe value of the specified identifier.
groupProgramTransferBooleanIndicates whether the transfer is part of a group program. (true/false)
codeStringPass 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

ParameterTypeDescription
dataArrayList of transfer records returned
toEntityIdIntegerUnique ID of the recipient customer
toEntityTypeStringType of recipient entity
fromEntityIdIntegerUnique ID of the sender customer
fromEntityTypeStringType of sender entity
pointsTransferDateString

Timestamp when transfer occurred in format: yyyy-MM-dd HH:mm:ss.

Note: This field will be deprecated in the future and is being replaced by pointsTransferDateISO.

pointsTransferDateISOString

Indicates the points transfer date in ISO 8601 format, returned in the server timezone.

EU server example
2025-12-16T14:30:45Z → 16 December 2025, 14:30:45 (UTC)

India server example
2025-12-16T14:30:45+05:30 → 16 December 2025, 14:30:45 (IST).

Note: The response time zone always matches the server time zone, regardless of the time zone offset in the request.

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": 564955411,
      "toEntityType": "CUSTOMER",
      "fromEntityId": 564955302,
      "fromEntityType": "CUSTOMER",
      "pointsTransferDate": "2026-01-07 10:15:05",
      "pointsTransferDateISO": "2026-01-07T10:15:05Z",
      "pointsTransferred": 2,
      "transferId": 1043035,
      "transferType": "DEDUCTION",
      "transferredFrom": {
        "userId": 564955302,
        "firstName": "Oliver",
        "lastName": "Twist"
      },
      "transferredTo": {
        "userId": 564955411,
        "firstName": "Tom",
        "lastName": "Sawyer"
      },
      "notes": "",
      "programName": "DocDemoDefaultProgram",
      "pointsTransferBreakupByEarningPrograms": [
        {
          "programId": 973,
          "deductedPoints": 1,
          "programCurrentPoints": 492
        }
      ]
    }
  ],
  "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.
Body Params
int32
required
int64
boolean
string
fromCustomerIdentifier
object
toCustomerIdentifier
object
string
Responses

Language
Credentials
Basic
base64
:
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json