Skip to content

Customer Management

Add Customer#

addCustomer

This method is used to create a new customer. Upon successful creation, a customer ID is generated. The customer can use this ID for future interactions, and the agent can use it to look up the customer's information.

Customer Type

This method creates a customer with the type "Customer of Customer"; It is different from the Add Enrolment Customer method.

Request Inputs#

Field Type Size Mandatory Description
agentCode String 5 Yes Send Agent code assigned by SHIFT
userId String 20 Yes User ID assigned by SHIFT
userPassword String 30 Yes User password assigned by SHIFT
customer Object Yes customer information object.
See below customer

customer#

customer Object fields (for addCustomer)
Field Type Size Mandatory Description
type Integer 1 Yes See the customer type table
firstName String 50 Conditional Mandatory if the customer type is 1. Allowed characters: English letters (A–Z, a–z) and spaces only.
middelName String 50 Conditional Mandatory if the sending country requires a middle name and the customer type is 1. Allowed characters: English letters (A–Z, a–z) and spaces only. If not required, this field should be left blank.
lastName String 50 Conditional Mandatory if the customer type is 1. Allowed characters: English letters (A–Z, a–z) and spaces only.
enName String 100 Conditional Mandatory if the customer type is 2. Allowed characters: English letters (A–Z, a–z) and spaces only.
telephone String 20 Conditional One of these fields (telephone or mobile) is mandatory. (+ or ++ not accepted)
mobile String 20 Conditional One of these fields (telephone or mobile) is mandatory. (+ or ++ not accepted)
email String 100 No If provided, must be in a valid email format
address String 200 Yes
nationalityCountryCode String 3 Yes ISO Alpha-3 (3166)
identityTypeCode Integer 4 Yes See Selected Identity type
identityNumber String 20 Yes This field accepts English letters (A–Z, a–z), numbers (0–9), spaces, and dashes (-)
identityIssuePlace String 100 Yes
identityIssueDate Date Yes Format: dd/MM/yyyy
identityExpiryDate Date Yes Format: dd/MM/yyyy
birthDateOrEstablishDate Date Yes Format: dd/MM/yyyy
birthPlace String 50 Conditional
gender Integer 1 Conditional Mandatory if the sender type is 1. See the gender types table
occupationOrSector String 100 Yes Depends on customer type. See get Occupations or sector
postalCode String 50 No
nationalNumber String 50 No If this field is not required, it should be left blank
sourceOfFund String 50 Yes This field must be filled with a value based on the sourceOfFund list. See get source of fund.

Response Outputs#

Field Type Description
resultCode String See the Result Codes and Messages table
resultMessage String
customerId Integer For a new customer, this field will be generated upon creation. For an existing customer, if the system detects a duplicate, it will return error 9304 – "Invalid Input Data: Customer already exists."

SOAP Request#

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice/" xmlns:apis="http://xml.netbeans.org/schema/ApiSchema">
   <soapenv:Header/>
   <soapenv:Body>
      <web:addCustomer>
         <customer>
            <apis:type>1</apis:type>
            <apis:firstName>Lama</apis:firstName>
            <apis:middelName>Zak</apis:middelName>
            <apis:lastName>Jamal</apis:lastName>
            <apis:enName></apis:enName>
            <apis:telephone></apis:telephone>
            <apis:mobile>07888888</apis:mobile>
            <apis:email></apis:email>
            <apis:address>test address</apis:address>
            <apis:nationalityCountryCode>JOR</apis:nationalityCountryCode>
            <apis:identityTypeCode>1</apis:identityTypeCode>
            <apis:identityNumber>528710122</apis:identityNumber>
            <apis:identityIssuePlace>Amman</apis:identityIssuePlace>
            <apis:identityIssueDate>15/03/2017</apis:identityIssueDate>
            <apis:identityExpiryDate>14/03/2022</apis:identityExpiryDate>
            <apis:gender>2</apis:gender>
            <apis:occupationOrSector>Doctor</apis:occupationOrSector>
            <apis:postalCode></apis:postalCode>
            <apis:birthDateOrEstablishDate>11/01/2020</apis:birthDateOrEstablishDate>
            <apis:birthplace>amman</apis:birthplace>
            <apis:nationalNumber>9850114444</apis:nationalNumber>
            <apis:sourceOfFund></apis:sourceOfFund>
         </customer>
         <agentCode>*****</agentCode>
         <userId>*****</userId>
         <userPassword>*****</userPassword>
      </web:addCustomer>
   </soapenv:Body>
</soapenv:Envelope>

SOAP Response#

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:addCustomerResponse xmlns:ns2="http://webservice/" xmlns:ns3="http://xml.netbeans.org/schema/ApiSchema">
         <return>
            <ns3:resultCode>9000</ns3:resultCode>
            <ns3:resultMessage>Operation successfully</ns3:resultMessage>
            <ns3:customerId>31243367</ns3:customerId>
         </return>
      </ns2:addCustomerResponse>
   </S:Body>
</S:Envelope>

Modify Customer#

modifyCustomer

This method is used to update customer information.

Update Behavior

Only the fields that need to be updated are required in the request; New input will overwrite the original field value.

Request Inputs#

Field Type Size Mandatory Description
agentCode String 5 Yes Send Agent code assigned by SHIFT
userId String 20 Yes User ID assigned by SHIFT
userPassword String 30 Yes User password assigned by SHIFT
customerId String 11 Yes
telephone String 20 Conditional One of these fields (telephone or mobile) is mandatory. (+ or ++ not accepted)
mobile String 20 Conditional One of these fields (telephone or mobile) is mandatory. (+ or ++ not accepted)
birthDateOrEstablishDate Date Yes Format: DD/MM/YYYY
address String 200 Yes
gender Integer 1 Conditional Mandatory if customer type 1. See gender types table
occupationOrSector String 100 Yes Depends on customer type. See get Occupations or sector
postalCode String 50 No

Response Outputs#

Field Type Description
resultCode String See the Result Codes and Messages table
resultMessage String
customerId Integer

SOAP Request#

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:modifyCustomer>
         <customerId>30545692</customerId>
         <telephone>876544333</telephone>
         <mobile>44444444</mobile>
         <address>test</address>
         <gender>1</gender>
         <occupationOrSector>doctor</occupationOrSector>
         <postalCode>12345</postalCode>
         <birthDateOrEstablishDate>11/11/2019</birthDateOrEstablishDate>
         <agentCode>*****</agentCode>
         <userId>*****</userId>
         <userPassword>*****</userPassword>
      </web:modifyCustomer>
   </soapenv:Body>
</soapenv:Envelope>

SOAP Response#

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns3:modifyCustomerResponse xmlns:ns2="http://xml.netbeans.org/schema/ApiSchema" xmlns:ns3="http://webservice/">
         <return>
            <ns2:resultCode>9000</ns2:resultCode>
            <ns2:resultMessage>Operation successfully</ns2:resultMessage>
            <ns2:customerId>30545692</ns2:customerId>
         </return>
      </ns3:modifyCustomerResponse>
   </S:Body>
</S:Envelope>

Customer Lookup#

customerLookup

This method is used to lookup customer information.

Search Criteria

The method supports multiple search criteria. At least one of the following search parameter sets must be provided:
1. customerId
2. identityTypeCode + identityNumber
3. nationalityCountryCode + nationalNumber
4. mobile

Request Inputs#

Field Type Size Mandatory Description
agentCode String 5 Yes Send Agent code assigned by SHIFT
userId String 20 Yes User ID assigned by SHIFT
userPassword String 30 Yes User password assigned by SHIFT
customerId Integer 8 Conditional Customer Id
identityTypeCode Integer 4 Conditional These two fields should pass in case search by identity number
identityNumber String 20 Conditional These two fields should pass in case search by identity number
nationalityCountryCode String 3 Conditional ISO Alpha-3 (3166). These two fields should pass in case search by national number
nationalNumber String 50 Conditional ISO Alpha-3 (3166). These two fields should pass in case search by national number
mobile String 20 Conditional

Response Outputs#

Field Type Description
resultCode String See the Result Codes and Messages table
resultMessage String
customerId Integer
customer Object Customer information object.
See below customer

customer#

customer Object fields (for customerLookup)
Field Type Size Description
id Integer 8
type Integer 1 See the customer type table
firstName String 50
middelName String 50
lastName String 50
enName String 100
telephone String 20
mobile String 20
email String 100
address String 200
nationalityCountryCode String 3
identityTypeCode Integer 4 See Get Identity Types
identityNumber String 20
identityIssuePlace String 100
identityIssueDate Date Format: dd/MM/yyyy
identityExpiryDate Date Format: dd/MM/yyyy
birthDateOrEstablishDate Date Format: dd/MM/yyyy
birthPlace String 50
gender Integer 1 See the gender types table
occupationOrSector String 100 See get Occupations or sector
postalCode String 50
nationalNumber String 50

SOAP Request#

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:customerLookup>
         <customerId>30545692</customerId>
         <identityTypeCode></identityTypeCode>
         <identityNumber></identityNumber>
         <nationalityCountryCode></nationalityCountryCode>
         <nationalNumber></nationalNumber>
         <mobile></mobile>
         <agentCode>*****</agentCode>
         <userId>*****</userId>
         <userPassword>*****</userPassword>
      </web:customerLookup>
   </soapenv:Body>
</soapenv:Envelope>

SOAP Response#

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns3:customerLookupResponse xmlns:ns2="http://xml.netbeans.org/schema/ApiSchema" xmlns:ns3="http://webservice/">
         <return>
            <ns2:resultCode>9000</ns2:resultCode>
            <ns2:resultMessage>Operation successfully</ns2:resultMessage>
            <ns2:customerId>30545692</ns2:customerId>
            <ns2:customer>
               <ns2:id>30545692</ns2:id>
               <ns2:type>1</ns2:type>
               <ns2:firstName>Lama</ns2:firstName>
               <ns2:middelName>Zak</ns2:middelName>
               <ns2:lastName>Jamal</ns2:lastName>
               <ns2:telephone>876544333</ns2:telephone>
               <ns2:mobile>44444444</ns2:mobile>
               <ns2:address>test</ns2:address>
               <ns2:nationalityCountryCode>JOR</ns2:nationalityCountryCode>
               <ns2:identityTypeCode>1</ns2:identityTypeCode>
               <ns2:identityNumber>528710444443122</ns2:identityNumber>
               <ns2:identityIssuePlace>Amman</ns2:identityIssuePlace>
               <ns2:identityIssueDate>01/01/1970</ns2:identityIssueDate>
               <ns2:identityExpiryDate>15/03/2017</ns2:identityExpiryDate>
               <ns2:gender>1</ns2:gender>
               <ns2:occupationOrSector>doctor</ns2:occupationOrSector>
               <ns2:postalCode>12345</ns2:postalCode>
               <ns2:birthDateOrEstablishDate>11/11/2019</ns2:birthDateOrEstablishDate>
               <ns2:birthplace>amman</ns2:birthplace>
            </ns2:customer>
         </return>
      </ns3:customerLookupResponse>
   </S:Body>
</S:Envelope>

Add Enrolment Customer#

addEnrolmentCustomer

This is a custom method used by certain partners to create a new enrolment customer. Upon successful creation, a customer profile ID is generated. This customer ID can then be used in the Send Remittance method.

Permissions Required

Permissions are required for the agent to access this method.

Customer Type

This method creates a customer with the type "Enrolment Customer"; It is different from the Add Customer method.

Request Inputs#

Field Type Size Mandatory Description
agentCode String 5 Yes Send Agent code assigned by SHIFT
userId String 20 Yes User ID assigned by SHIFT
userPassword String 30 Yes User password assigned by SHIFT
customer Object Yes Customer information object.
See below customer
kycQuestioner Object Yes KYC questionnaire object.
See below kycQuestioner
lstDocuments List of Objects Yes List of documents.
See below lstDocuments

customer#

customer Object fields (for addEnrolmentCustomer)
Field Type Size Mandatory Description
type Integer 1 Yes Fixed value "1"
firstName String 50 Yes Only English alpha and spaces
middelName String 50 No Only English alpha and spaces
lastName String 50 Yes Only English alpha and spaces
residenceCountryCode String 3 Yes ISO Alpha-3 (3166)
nationalityCountryCode String 3 Yes ISO Alpha-3 (3166)
gender Integer 1 Yes See the gender types table
telephone String 20 No Please pass this param with empty value
mobile String 20 Yes + or ++ not accepted
email String 100 Conditional If provided, must be in a valid email format
address String 200 Yes
identityTypeCode Integer 4 Yes Accepted values: 1: Passport, 2: National Identification Card, 3: Driving License, 4: Residency Card, 6: Other Gov IDs
identityNumber String 20 Yes
identityIssuePlace String 100 Yes
identityIssueDate Date Yes Format: dd/MM/yyyy
identityExpiryDate Date Yes Format: dd/MM/yyyy
birthDateOrEstablishDate Date Yes Format: dd/MM/yyyy
birthPlace String 50 Conditional
occupationOrSector String 100 Yes Refer to get Occupations or sector
postalCode String 50 Yes
nationalNumber String 50 No Please pass this param empty if N/A
sourceOfFund String 50 Yes See Get Source Of fund List

kycQuestioner#

kycQuestioner Object fields
Field Type Size Mandatory Description
expectedTurnover Integer 8 Yes Annual expected turnover
expectedReceiveCountries String 50 Yes Receiver countries (country ISO code). Separate by a comma for multivalue. E.g.: "GPR,QAT,EGY,IND"
expectedServiceTypes String 50 Yes Expected services-delivery types. Accepted values: 0035: CREDIT, 0036: CASH, 0069: CASH_TO_MOBILE, 0074: CASH_TO_CARD. Separate by a comma for multivalue. E.g.: "0035,0036"
isPep Integer 1 Yes Customer is PEP? Accepted values: 1: Yes, 2: No
isLocatedHighRisk Integer 1 Yes Is located or has dealing to high-Risk jurisdiction? Accepted values: 1: Yes, 2: No
isAdverseMedia Integer 1 Yes Adverse Media considered as High Risk? Accepted values: 1: Yes, 2: No

lstDocuments#

Repeatable Object

This object can be repeated based on the number of documents.

lstDocuments Object fields
Field Type Size Mandatory Description
type Integer 1 Yes Accepted values: 1: Identity documents, 3: Other documents, selfie, proof of address, etc.
documentName String 100 Yes E.g. for type 1: Identity card, Passport, etc.
E.g. for type 3: selfie, proof of address, etc.
documentFile BASE64 200 Yes BASE64 format. Max file size 2MB
fileExtension String 3 Yes Allowed image formats: (png, jpg, pdf)
description String 100 No
identityTypeCode Integer 1 Yes YES if type 1. Accepted values: 1: Passport, 2: National Identification Card, 3: Driving License, 4: Residency Card, 6: Other Gov IDs
identityNumber String 50 Yes YES if type 1
identityIssuePlace String 50 Yes YES if type 1
identityIssueDate Date Yes YES if type 1. Format: dd/MM/yyyy
identityExpiryDate Date Yes YES if type 1. Format: dd/MM/yyyy

Response Outputs#

Field Type Description
resultCode String See the Result Codes and Messages table
resultMessage String
customerId Integer E.g.: 3258114. This customerId needs to be provided in Send Remittance

SOAP Request#

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice/" xmlns:apis="http://xml.netbeans.org/schema/ApiSchema">
   <soapenv:Header/>
   <soapenv:Body>
      <web:addEnrolmentCustomer>
         <customer>
            <apis:type>1</apis:type>
            <apis:firstName>Saeed</apis:firstName>
            <apis:middelName></apis:middelName>
            <apis:lastName>Khader</apis:lastName>
            <apis:telephone></apis:telephone>
            <apis:mobile>078888888</apis:mobile>
            <apis:address>address added</apis:address>
            <apis:nationalityCountryCode>JOR</apis:nationalityCountryCode>
            <apis:residenceCountryCode>JOR</apis:residenceCountryCode>
            <apis:identityTypeCode>1</apis:identityTypeCode>
            <apis:identityNumber>123321</apis:identityNumber>
            <apis:identityIssuePlace>amm</apis:identityIssuePlace>
            <apis:identityIssueDate>01/01/2025</apis:identityIssueDate>
            <apis:identityExpiryDate>01/01/2029</apis:identityExpiryDate>
            <apis:gender>1</apis:gender>
            <apis:occupationOrSector>Doctor</apis:occupationOrSector>
            <apis:postalCode>12132 10</apis:postalCode>
            <apis:birthDateOrEstablishDate>01/01/1980</apis:birthDateOrEstablishDate>
            <apis:birthPlace>ammmman</apis:birthPlace>
            <apis:nationalNumber>NA</apis:nationalNumber>
            <apis:sourceOfFund>Salary</apis:sourceOfFund>
         </customer>
         <kycQuestioner>
            <apis:expectedTurnover>333</apis:expectedTurnover>
            <apis:expectedReceiveCountries>BHR,EGY</apis:expectedReceiveCountries>
            <apis:expectedServiceTypes>0036,0035</apis:expectedServiceTypes>
            <apis:isPep>1</apis:isPep>
            <apis:isAdverseMedia>1</apis:isAdverseMedia>
            <apis:isLocatedHighRisk>1</apis:isLocatedHighRisk>
         </kycQuestioner>
         <lstDocuments>
            <apis:documentName>identity id</apis:documentName>
            <apis:documentFile>iVBORw0KGgoAAAANS........</apis:documentFile>
            <apis:fileExtension>png</apis:fileExtension>
            <apis:type>1</apis:type>
            <apis:description>identity id image</apis:description>
         </lstDocuments>
         <lstDocuments>
            <apis:documentName>selfie document</apis:documentName>
            <apis:documentFile>iVBORw0KGgoA.......</apis:documentFile>
            <apis:fileExtension>png</apis:fileExtension>
            <apis:type>3</apis:type>
            <apis:description>selfie image</apis:description>
         </lstDocuments>
         <agentCode>*****</agentCode>
         <userId>*****</userId>
         <userPassword>*****</userPassword>
      </web:addEnrolmentCustomer>
   </soapenv:Body>
</soapenv:Envelope>

SOAP Response#

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns3:addEnrolmentCustomerResponse xmlns:ns2="http://xml.netbeans.org/schema/ApiSchema" xmlns:ns3="http://webservice/">
         <return>
            <ns2:resultCode>9000</ns2:resultCode>
            <ns2:resultMessage>Operation successfully</ns2:resultMessage>
            <ns2:customerId>37460199</ns2:customerId>
         </return>
      </ns3:addEnrolmentCustomerResponse>
   </S:Body>
</S:Envelope>

Add Enrolment Customer Document#

addEnrolmentCustDocument

This is a custom method used by certain partners to attach a new document to an enrolment customer profile.

Permissions Required

Permissions are required for the agent to access this method.

Request Inputs#

Field Type Size Mandatory Description
agentCode String 5 Yes Send Agent code assigned by SHIFT
userId String 20 Yes User ID assigned by SHIFT
userPassword String 30 Yes User password assigned by SHIFT
customerID Integer 8 Yes Returned from Add Enrolment Customer
document Object Yes Document information object.
See below document

document#

document Object fields
Field Type Size Mandatory Description
type Integer 1 Yes Accepted values: 1: Identity documents, 3: Other documents, selfie, proof of address, etc.
documentName String 100 Yes E.g. for type 1: Identity card, Passport, etc.
E.g. for type 3: selfie, proof of address, etc.
documentFile BASE64 200 Yes BASE64 format. Max file size 2MB
fileExtension String 3 Yes Allowed image formats: (png, jpg, pdf)
description String 100 No
identityTypeCode Integer 1 Yes YES if type 1. Accepted values: 1: Passport, 2: National Identification Card, 3: Driving License, 4: Residency Card, 6: Other Gov IDs
identityNumber String 50 Yes YES if type 1
identityIssuePlace String 50 Yes YES if type 1
identityIssueDate Date Yes YES if type 1. Format: dd/MM/yyyy
identityExpiryDate Date Yes YES if type 1. Format: dd/MM/yyyy

Response Outputs#

Field Type Description
resultCode String See the Result Codes and Messages table
resultMessage String

SOAP Request#

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice/" xmlns:apis="http://xml.netbeans.org/schema/ApiSchema">
   <soapenv:Header/>
   <soapenv:Body>
      <web:addEnrolmentCustDocument>
         <customerID>37460199</customerID>
         <document>
            <apis:documentName>identity id</apis:documentName>
            <apis:documentFile>iVBORw0KGg..........HfxoEKOLAeQAAAAASUVORK5CYII=</apis:documentFile>
            <apis:fileExtension>png</apis:fileExtension>
            <apis:type>2</apis:type>
            <apis:description>test</apis:description>
            <apis:identityTypeCode>1</apis:identityTypeCode>
            <apis:identityIssuePlace>amm</apis:identityIssuePlace>
            <apis:identityIssueDate>01/01/2000</apis:identityIssueDate>
            <apis:identityExpiryDate>01/01/2028</apis:identityExpiryDate>
            <apis:identityNumber>222</apis:identityNumber>
         </document>
         <agentCode>*****</agentCode>
         <userId>*****</userId>
         <userPassword>*****</userPassword>
      </web:addEnrolmentCustDocument>
   </soapenv:Body>
</soapenv:Envelope>

SOAP Response#

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns3:addEnrolmentCustDocumentResponse xmlns:ns2="http://xml.netbeans.org/schema/ApiSchema" xmlns:ns3="http://webservice/">
         <return>
            <ns2:resultCode>9000</ns2:resultCode>
            <ns2:resultMessage>Operation successfully</ns2:resultMessage>
         </return>
      </ns3:addEnrolmentCustDocumentResponse>
   </S:Body>
</S:Envelope>