The Transfers API allows the client to perform the following operations on behalf of the customer:
1. Validate a transfer request from the customer's account to a beneficiary and also fetch and display the following details to the customer on the pre confirmation screen :
charges, debit amount, total credit amount, authentication mode for the transaction & approvers list (whenever workflow is applicable for the transaction)
2. Create a transfer to initiate a payment from a customer's account to his beneficiary. The Payment Reference Id will be returned in the response for a successful payment request initiation.
3. Fetch the details and the status of the transaction.
This API requires beneficiary_id of the customer's beneficiary to be passed in the request which can be fetched using the Beneficiaries API.
Attachment | Size |
---|---|
![]() | 5.07 KB |
OAuth Metadata details
Token URL for Third Party Apps: https://sandboxapi.rakbank.ae/rb/api/v1/customer_signin/oauth2/token
scope : transfers
grant_type : authorization_code | refresh_token
Basepath
/v1
Paths
/transfers/validate
Validate a Transfer Request
Validate a transfer request from a custome Account to a beneficiary to fetch and display the following details to the customer on the pre confirmation screen - charges, debit amount, total credit amount, authentication mode for the transaction & approvers list (whenever workflow is applicable for the transaction)
Request details to create a payment transaction.
Unique Id sent by the client. Value should be a unique identifier of the transaction in UUID format
{
"maxLength": 50
}
200 OK
Unauthorized
Forbidden
Invalid Request
Internal Server Error
/transfers/{transfer_id}
Create a Transfer Request by Id
Create a transfer to initiate a payment from a customer's account to his beneficiary. The Payment Reference Id will be returned in the response for a successful payment request initiation.
Unique ID for the transfer that is generated by the client. The transfer_id used to create/fetch the transfer.
{
"minimum": 1,
"maximum": 9999999999
}
Unique Id sent by the client. Value should be a unique identifier of the transaction in UUID format
{
"maxLength": 50
}
Request details to create a transfer.
201 Created
Unauthorized
Forbidden
Invalid Request
Internal Server Error
Get the transfer details and status by passing the transfer_id.
Unique ID for the transfer that is generated by the client. The transfer_id used to create/fetch the transfer.
{
"minimum": 1,
"maximum": 9999999999
}
Unique Id sent by the client. Value should be a unique identifier of the transaction in UUID format
{
"maxLength": 50
}
200 OK
Unauthorized
Forbidden
Invalid Request
Internal Server Error
Definitions
{
"properties": {
"href": {
"type": "string",
"example": "https://sandboxapi.rakbank.ae/rb/api/v1/tpa/transfers/123456789",
"description": "href value to fetch the resource with the specific id. Read-only field."
},
"transfer_id": {
"type": "integer",
"minimum": 1,
"maximum": 9999999999,
"description": "The client's unique id for the transfer. Read-only field.",
"example": "123456789"
},
"payment_ref_id": {
"type": "integer",
"minimum": 1,
"maximum": 9999999999,
"description": "The bank's unique id for the transaction. Read-only field.",
"example": "14091746"
},
"from": {
"$ref": "#/definitions/from"
},
"to": {
"$ref": "#/definitions/to"
},
"transaction_date": {
"type": "string",
"description": "Date when the transaction is submitted.",
"example": "2017-09-14",
"format": "date"
},
"transaction_amount": {
"$ref": "#/definitions/value",
"description": "Transaction Amount and currency as entered by customer."
},
"debit_amount": {
"$ref": "#/definitions/value",
"description": "Total transaction amount in home currency (AED). Read-only field."
},
"remittance_currency": {
"type": "string",
"minLength": 1,
"maxLength": 3,
"description": "Remittance currency selected by customer.",
"example": "AED"
},
"purpose_code": {
"type": "string",
"minLength": 1,
"maxLength": 20,
"description": "Code for the Purpose of the remittance selected by customer. Not be sent for WithinRAKBANK transfers. Mandatory for all other transfer types.",
"example": "FS"
},
"remarks": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 33
},
"minItems": 1,
"maxItems": 3,
"description": "Optional Transaction Remarks line1, line2 and line3.",
"example": [
"line1",
"line2",
"line3"
]
},
"charges_type": {
"description": "Customer selected charge indicator. Optional only for WithinRAKBANK transfers. O - All Charges to my Account B - All charges to Beneficiary's Account S - Local charges to Me and Outside UAE charges to Beneficiary.",
"type": "string",
"enum": [
"O",
"B",
"S"
]
},
"approver_id": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"description": "User selected approver_id from the approvers list returned in Validate response. Mandatory when workflow_mode = ENT in Validate response.",
"example": "MACORP2"
},
"transfer_status": {
"description": "Transfer status object. Read-only field.",
"$ref": "#/definitions/transfer_status"
}
},
"additionalProperties": false,
"required": [
"from",
"to",
"transaction_date",
"transaction_amount",
"remittance_currency"
]
}
Response in case of error
{
"properties": {
"status": {
"type": "string",
"description": "HTTP Status"
},
"response_code": {
"type": "string",
"description": "API specific error code"
},
"property": {
"type": "string"
},
"response_message": {
"type": "string",
"description": "brief type of the error",
"example": ""
},
"description": {
"type": "string",
"description": "detailed description of the error"
}
},
"additionalProperties": false,
"required": [
"response_code",
"status",
"response_message"
]
}
This will contain the details of the beneficiary.
{
"properties": {
"href": {
"type": "string",
"example": "https://sandboxapi.rakbank.ae/rb/api/v1/tpa/customers/Account_ID:1234xxxxxx423/beneficiaries/759400045",
"description": "href value to fetch the resource with a specific beneficiary_id for a registered beneficiary. Read-only field."
},
"beneficiary_id": {
"type": "integer",
"maximum": 9999999999,
"example": "759400045",
"description": "Beneficiary id of a registered beneficiary."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Name of the beneficiary. Read-only field.",
"example": "James Gordan"
},
"nick_name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Nick Name of the beneficiary. Read-only field.",
"example": "James"
},
"other_account_id": {
"type": "string",
"minLength": 1,
"maxLength": 34,
"description": "Account id or IBAN of the beneficiary. Read-only field.",
"example": "963521478"
},
"other_account_currency": {
"type": "string",
"minLength": 1,
"maxLength": 3,
"description": "Currency of the beneficiary account. Mandatory for WithinRAKBANK beneficiaries.",
"example": "AED"
},
"address": {
"$ref": "#/definitions/address",
"description": "Beneficiary Residence Address. Mandatory for OutsideUAE beneficiaries who’s resident country is not returned in Beneficiaries API."
}
},
"additionalProperties": false,
"required": [
"beneficiary_id"
]
}
This will contain the details of the remitter
{
"properties": {
"account_id": {
"type": "string",
"minLength": 1,
"maxLength": 34,
"description": "Account id of the customer. Only MASKED value to be passed. Masking logic to be followed : - First 4 and last 3 characters to be unmasked. All chracters in between to be masked by replacing with ''x''. e.g. 1234xxxxxx567",
"example": "1234xxxxxx567"
},
"account_currency": {
"type": "string",
"minLength": 1,
"maxLength": 3,
"description": "Currency of the customer account.",
"example": "AED"
}
},
"additionalProperties": false,
"required": [
"account_id",
"account_currency"
]
}
Transaction amount details
{
"properties": {
"currency": {
"type": "string",
"maxLength": 3,
"description": "Currency",
"example": "AED"
},
"amount": {
"type": "string",
"pattern": "^\\d{0,18}.\\d{0,3}$",
"description": "Amount Value. Number (18,3). [ Mantissa (18), Decimal Precision (3), excluding dot]. Example: 50.05 AED, 10.25, USD 3.099 BHD and 10 JPY",
"example": 50.05
}
},
"additionalProperties": false,
"required": [
"currency",
"amount"
]
}
{
"properties": {
"status": {
"type": "string",
"maxLength": 5,
"description": "Status of the transfer. Read-only field.",
"example": "SUC"
}
},
"additionalProperties": false,
"required": [
"status"
]
}
Beneficiary Residence Address
{
"properties": {
"line_1": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Address line 1 of the beneficiary"
},
"line_2": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Address line 2 of the beneficiary"
},
"line_3": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Address line 3 of the beneficiary"
},
"city": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "City of the beneficiary"
},
"state": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "State of the beneficiary"
},
"district": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "District of the beneficiary"
},
"country": {
"type": "string",
"minLength": 1,
"maxLength": 2,
"description": "Country of the beneficiary. ISO 2 Character Country Codes.",
"example": "IN"
}
},
"additionalProperties": false,
"required": [
"country"
]
}
{
"properties": {
"transfers": {
"$ref": "#/definitions/transfers"
},
"transaction_authentication": {
"$ref": "#/definitions/transaction_authentication"
}
},
"additionalProperties": false,
"required": [
"transfers"
]
}
Mandatory when auth_mode is returned in Validate response
{
"properties": {
"customer_hard_token": {
"type": "number",
"description": "Field to hold RAK token in case auth_mode in Validate response is STKN.",
"example": 4324
},
"sms_otp": {
"type": "number",
"description": "Field to hold sms otp in case auth_mode in Validate response is SOTP",
"example": 242356
}
},
"additionalProperties": false
}
Validate response
{
"properties": {
"transaction_date": {
"type": "string",
"description": "Date when the transaction is submitted.",
"example": "2017-09-14",
"format": "date"
},
"transaction_amount": {
"$ref": "#/definitions/value",
"description": "Transaction Amount and currency as entered by customer."
},
"debit_amount": {
"$ref": "#/definitions/value",
"description": "Total transaction amount in home currency (AED)."
},
"total_credit_amount": {
"$ref": "#/definitions/value",
"description": "Total credit amount in remittance currency."
},
"charges": {
"$ref": "#/definitions/value",
"description": "Total charges in home currency (AED)."
},
"auth_mode": {
"description": "Field to hold the Authorization modes. If this tag is not present then there is no authorization code required for transaction submit. Possible values are : SOTP – SMS OTP STKN – 2FA Token",
"type": "string",
"enum": [
"SOTP",
"STKN"
]
},
"workflow_mode": {
"description": "Workflow mode. AUT - When there is no workflow for the transactions ENT - When workflow present for the transaction",
"type": "string",
"enum": [
"AUT",
"ENT"
]
},
"approvers": {
"type": "array",
"items": {
"$ref": "#/definitions/approvers"
}
}
},
"additionalProperties": false,
"required": [
"transaction_amount",
"debit_amount",
"total_credit_amount",
"transaction_date"
]
}
List of approvers to be displayed to the user when workflow_mode is returned as 'ENT' in Validate response
{
"properties": {
"approver_id": {
"type": "string",
"minLength": 0,
"maxLength": 10,
"description": "Field to hold the approver id of the next elligble approver.",
"example": "MACORP2"
},
"display_name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Display name of the approver in First Name Last Name",
"example": "FIRST NAME LAST NAME"
},
"role_desc": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Role description of the user returned in the Approver list",
"example": "approver"
}
},
"additionalProperties": false,
"required": [
"approver_id",
"display_name",
"role_desc"
]
}