IME London
Technical Documentation · Version 5.0.0

Inbound API for IME London Remittance

Integration reference for authentication, signature generation, reference data, bank lookup, exchange-rate calculation, account validation, remittance creation and transaction-status checks.

OrganisationIME London, Subhida UK Limited
AddressPentax House, South Hill Avenue, HA2 0DU London
Contact+44 20 8866 0307 · 7984713677
Email / Webinfo@imelondon.co.uk · imelondon.co.uk
Document control

Revision history

VersionChange summaryRevised date
1.0.0Created2024/03/09
2.0.0Modified2024/10/21
3.0.0Modified2024/10/25
4.0.0Modified2025/02/14
5.0.0Modified2025/06/26
Process

Inbound transaction flow

The source document's flowchart shows authentication first, followed by transaction submission, response checking and return of an IME control number.

1. Get authentication
→
2. Validate returned token
→
3. Send transaction
Authentication failure: check partner credentials, then request a new token.
Transaction failure: verify the request payload and required headers before retrying.
Reference

Methods declared in the web service

Mandatory

Authentication · authenticate

Creates an IME London Core System session for use with the remaining methods.

GetCode · getCode

Returns source of fund, remittance purpose, ID type, relationship, occupation, country, payment type, company registration type and customer type.

CalculateExRate · calculateExRate

Returns exchange-rate and calculated remittance amounts.

AccountValidate · accountValidation

Validates the receiver's bank account details.

sendRemittance · sendRemittance

Sends a new remittance transaction to IME London.

getRemittanceStatus · getRemittanceStatus

Returns the current transaction status.

Security · Step 1

Authentication

This mandatory method creates the IME session used to invoke the other API methods.

GET/api/authenticate

HTTP request header

HeaderDescription
AgentIdID of partner

Authorization parameters

ParameterTypeDescriptionRequirement
UsernameStringUsername of partnerM
PasswordStringPassword of partnerM
Authorization: The document illustrates HTTP Basic Authentication for the username and password.

Response example

JSON
{
  "responseCode": 100,
  "responseMessage": "Success.",
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "tokenType": "Bearer",
    "expiresIn": 1800,
    "sessionIdentifier": "1004025b-cfa7-4291-8081-18bd2a5d2189"
  }
}
Security · Step 2

Generate signature

Combine the request parameters in the documented order, then hash the resulting string.

OrderParameterDescription
1AppIdPartner App ID
2SecurityKeyPartner security key
3NonceUnique GUID
4TimestampCurrent UTC timestamp in seconds since the Unix epoch

Documented concatenation

Plain text
listString = APPID:SecurityKey:Nonce:Timestamp
signature = GetMd5Hash(listString)

C# timestamp example

C#
static long GetCurrentTimestamp()
{
    DateTime epochStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
    TimeSpan timeSpan = DateTime.UtcNow - epochStart;
    return Convert.ToInt64(timeSpan.TotalSeconds);
}
Source wording: the document refers to both "GenerateHMAC" and GetMd5Hash. This page preserves the documented MD5 call rather than choosing between them.
Security · Step 3

HTTP headers

All API requests should contain the following elements.

ParameterTypeDescriptionRequirement
Content-Typeapplication/jsonJSON content typeM
AuthorizationStringGenerated token from the authentication requestM
SignatureStringGenerated request signatureM
HTTP
Content-Type: application/json
Authorization: Bearer <access-token>
Signature: <generated-signature>
Reference data

Get Code

Returns the code lists used by remittance requests.

POST/api/v1/Remit/getCode
ParameterTypeDescriptionRequirement
partnerSessionIdStringUnique random valueM

Request example

JSON
{
  "partnerSessionId": "PARTNER-XXX-SESSION-ID1"
}

Response example

JSON
{
  "responseCode": 100,
  "responseMessage": "API Called successfully",
  "data": {
    "sourceOfFund": [{ "id": "11416", "text": "Business Income" }],
    "purposeOfRemittance": [{ "id": "11411", "text": "Birthday Gift" }],
    "idType": [{ "id": "11168", "text": "Biometric Residence Permit" }],
    "country": [{
      "id": "12",
      "text": "Australia",
      "countryCode": "AU",
      "isoApha3": "AUS"
    }],
    "paymentType": [{ "id": "2", "text": "Bank Deposit", "code": "BD" }]
  }
}
Reference data

Get Bank

Returns the active bank list for a payout country.

POST/api/v1/Remit/getBank
ParameterTypeMax lengthDescriptionRequirement
partnerSessionIdString15Unique random valueM
countryIdString10Country ID of payout countryM

Request example

JSON
{
  "partnerSessionId": "PARTNER-XXX-SESSION-ID1",
  "countryId": "233"
}

Response example

JSON
{
  "responseCode": 100,
  "responseMessage": "API Called successfully",
  "data": {
    "countryId": null,
    "bank": [
      { "id": "446", "text": "AB BANK" },
      { "id": "436", "text": "AGRANI BANK" },
      { "id": "475", "text": "WOORI BANK" }
    ]
  }
}
Calculation

Exchange Rate

Requests the exchange rate and calculated amounts for a payout country and payout type.

POST/api/v1/Remit/calculateExRate
ParameterTypeDescriptionRequirement
partnerSessionIdStringUnique random valueM
sendingCountryCodeStringCode of sending countryM
sendingCurrencyCodeStringCurrency code of sending countryM
payoutCountryCodeStringCode of payout countryM
payoutCurrencyCodeStringCurrency code of payout countryM
collectionAmountStringAmount in sending currencyM
payoutAmountStringAmount in receiving currencyM
payoutTypeCodeStringPayout type code from Get CodeM
calcByStringC: calculate by sending amount. P: calculate by payout amount.M

Request example

JSON
{
  "partnerSessionId": "PARTNER-XXX-SESSION-ID1",
  "sendingCountryCode": "KR",
  "sendingCurrencyCode": "USD",
  "payoutCountryCode": "UK",
  "payoutCurrencyCode": "GBP",
  "collectionAmount": "0",
  "payoutAmount": "33",
  "payoutTypeCode": "BD",
  "calcBy": "P"
}

Response example

JSON
{
  "responseCode": 100,
  "responseMessage": "Success",
  "data": {
    "serviceCharge": "05.00",
    "exRate": "00.7874",
    "payoutCurrencyCode": "GBP",
    "currDecimal": "0",
    "collectionAmount": "46.91",
    "transferAmount": "41.91",
    "payoutAmount": "33.00"
  }
}
Validation

Account Validation

Validates the receiver's bank account.

POST/api/v1/Remit/accountValidation
ParameterTypeDescriptionRequirement
partnerSessionIdStringUnique random valueM
receiverFullNameStringFull name of receiverM
bankIdStringBank ID returned by Get BankM
receiverCountryStringCountry of receiverM
accountNumberStringReceiver account numberM

Request example

JSON
{
  "partnerSessionId": "PARTNER-XXX-SESSION-ID1",
  "receiverFullName": "Jhon Doe",
  "bankId": "IME0000843",
  "receiverCountry": "NP",
  "accountNumber": "124242545555555"
}

Response parameters

Response codeSub-codeDescription
1000Validate success
10101Account name mismatch
10102Invalid account number
10103Invalid request / validation failed
10104Account number of receiver
10105Invalid bank / routing code
10106Account blocked
999—Technical error occurred
Core transaction

Create Transaction

This mandatory method initiates a new transaction to the payout agent.

POST/api/v1/Remit/sendRemittance
Requirement legend: M mandatory, O optional, Conditional required only under the condition stated in the description.

Session and sender details

GroupParameterTypeMax lengthDescriptionRequirement
SessionpartnerSessionIdString15Unique random valueM
Sender detailssenderCustomerTypeString1I for individual, B for businessM
senderFirstNameString20Required for individual senderConditional
senderMiddleNameString20Middle name of senderO
senderLastNameString20Required for individual senderConditional
senderDOBString10Required for individual senderConditional
senderIdTypeString15Get from Get Code; required for individual senderConditional
senderGenderString1M, F or O; required for individual senderConditional
senderIdNoString20Required for individual senderConditional
senderIdIssueDateString10Required for individual senderConditional
senderIdValidDateString10Required for individual senderConditional
senderMobileString15Mobile number of sender—
senderEmailString25Email address of senderM
senderNativeCountryCodeString3Native country code of senderM
Sender detailssenderCityString15City of senderO
Sender detailssenderAddressString20Address of senderM

Sender company details

ParameterTypeMax lengthDescriptionRequirement
companyNameString100Required for business senderConditional
invoiceNumberString30Required for business senderConditional
vatOrTaxNumberString30Required for business senderConditional
establishedDateString10Required for business senderConditional
registrationTypeString15Get from Get Code; required for business senderConditional
registrationNumberString30Required for business senderConditional
registrationIssueDateString10Required for business senderConditional
registrationExpiryDateString10Required for business senderConditional
extra1String50Optional fieldO
extra2String50Optional fieldO
extra3String50Optional fieldO

Receiver details

ParameterTypeMax lengthDescriptionRequirement
receiverCustomerTypeString1I for individual, B for businessM
receiverFirstNameString20Required for individual receiverConditional
receiverMiddleNameString20Middle name of beneficiaryO
receiverLastNameString20Required for individual receiverConditional
receiverIdTypeString15ID type of beneficiaryO
receiverIdNoString20ID number of beneficiaryO
receiverIdIssueDateString10ID issue date of beneficiaryO
receiverIdValidDateString10ID valid date of beneficiaryO
receiverMobileString15Mobile number of beneficiaryM
receiverCityString15City of receiverO
receiverAddressString20Receiver addressM
receiverEmailString20Email address of receiverO
routingNumber/SortCodeString—Required for Bank DepositConditional
accountNo/IBANString—Required for Bank DepositConditional

Receiver company details

ParameterTypeMax lengthDescriptionRequirement
companyNameString50Required for business receiverConditional
invoiceNumberString50Required for business receiverConditional
vatOrTaxNumberString30Required for business receiverConditional
establishedDateString10Required for business receiverConditional
registrationTypeString15Get from Get Code; required for business receiverConditional
registrationNumberString30Required for business receiverConditional
registrationIssueDateString10Required for business receiverConditional
registrationExpiryDateString10Required for business receiverConditional
extra1String50Optional fieldO
extra2String50Optional fieldO
extra3String50Optional fieldO

Remittance details

ParameterTypeMax lengthDescriptionRequirement
sendingCountryCodeString3Country code of sending countryM
payoutCountryCodeString3Country code of receiving countryM
payoutTypeCodeString2Payment type from Get CodeM
payoutBankCodeString10Bank code from Get Bank; required for Bank DepositConditional
payoutBranchCodeString10Payout branch codeO
remittancePurposeString20Purpose from Get CodeM
otherPurposeOfRemittanceString30Required when purpose is "Other" (document example ID 11347)Conditional
sourceOfFundString20Source of fund from Get CodeM
otherSourceOfFundString30Required when source is "Other" (document example ID 11417)Conditional
relationshipString20Receiver relationship from Get CodeM
otherRelationshipString30Required when relationship is "Other" (document example ID 11339)Conditional
occupationString20Occupation from Get CodeM
otherOccupationString30Required when occupation is "Other"Conditional
calcByString1C by sending amount; P by payout amountM
payoutCurrencyCodeString3Currency code of receiving countryM
sendingCurrencyCodeString3Currency code of sending countryM
payoutAmountString10Receiving amount from Exchange RateM
partnerTransactionIdString10Partner transaction IDM

Individual customer request example

JSON
{
  "partnerSessionId": "SADASD234432SDDSA",
  "remitSenderDetails": {
    "SenderCustomerType": "I",
    "senderFirstName": "John",
    "senderMiddleName": "",
    "senderLastName": "Doe",
    "senderDOB": "2000-10-01",
    "senderIdType": "10997",
    "senderIdNo": "9861100000",
    "senderIdIssuedDate": "2022-01-01",
    "senderIdValidDate": "2030-01-01",
    "senderMobile": "986151172883",
    "senderNativeCountryCode": "NP",
    "senderCity": "London",
    "senderAddress": "London, UK",
    "senderEmail": "johndoe@gmail.com",
    "senderGender": "M"
  },
  "remitReceiverDetails": {
    "receiverCustomerType": "I",
    "receiverFirstName": "John",
    "receiverMiddleName": "",
    "receiverLastName": "Doe",
    "receiverIdType": "10997",
    "receiverIdNo": "19281982",
    "receiverIdIssued": "2022-01-01",
    "receiverIdValid": "2030-01-01",
    "receiverMobile": "91111111183",
    "receiverCity": "KATHMANDU",
    "receiverAddress": "KOTESHWOR-32, KATHMANDU, NEPAL",
    "accountNo/IBAN": "526598989",
    "routingNumber/SortCode": "535353",
    "receiverEmail": "johndoe@gmail.com"
  },
  "remittanceDetails": {
    "sendingCountryCode": "KR",
    "payoutCountryCode": "UK",
    "payoutTypeCode": "BD",
    "payoutBankCode": "IME0001495",
    "payoutBankBranchCode": "",
    "payoutCurrencyCode": "GBP",
    "sendingCurrencyCode": "USD",
    "payoutAmount": "33.00",
    "remittancePurpose": "11411",
    "otherPurposeOfRemittance": "",
    "sourceOfFund": "11416",
    "otherSourceOfFund": "",
    "relationship": "11338",
    "otherRelationship": "",
    "occupation": "11463",
    "otherOccupation": "",
    "calcBy": "P"
  },
  "partnerTransactionId": "2222121117"
}

Business customer request example

JSON
{
  "partnerSessionId": "454788",
  "RemitSenderDetails": {
    "SenderCustomerType": "B",
    "SenderFirstName": "",
    "SenderMiddleName": "",
    "SenderLastName": "",
    "SenderDOB": "",
    "SenderIdType": "",
    "SenderIdNo": "",
    "SenderIdIssuedDate": "",
    "SenderIdValidDate": "",
    "SenderMobile": "01072769833",
    "SenderNativeCountryCode": "NP",
    "SenderCity": "Seoul",
    "SenderAddress": "jeju",
    "SenderEmail": "johndoe2000@gmail.com",
    "SenderGender": "",
    "companyDetails": {
      "companyName": "Abc Company",
      "invoiceNumber": "15451",
      "vatOrTaxNumber": "6741634",
      "establishedDate": "2014-08-05",
      "registrationType": "11513",
      "registrationNumber": "15475457",
      "registrationIssueDate": "2014-08-05",
      "registrationExpiryDate": "2030-08-05",
      "extra1": "string",
      "extra2": "string",
      "extra3": "string"
    }
  },
  "RemitReceiverDetails": {
    "receiverCustomerType": "B",
    "ReceiverFirstName": "",
    "ReceiverMiddleName": "",
    "ReceiverLastName": "",
    "ReceiverIdType": "",
    "ReceiverIdNo": "",
    "ReceiverIdIssuedDate": null,
    "ReceiverIdValidDate": null,
    "ReceiverMobile": "7760722668",
    "ReceiverCity": "B70 9HW 11 BRIDGE STREET",
    "ReceiverAddress": "B70 9HW 11 BRIDGE STREET",
    "AccountNo/IBAN": "11111111",
    "ReceiverEmail": "dineshguragain2000@gmail.com",
    "RoutingNumber/SortCode": "232221",
    "companyDetails": {
      "companyName": "Xyz Company",
      "invoiceNumber": "66464",
      "vatOrTaxNumber": "6355652",
      "establishedDate": "2022-02-21",
      "registrationType": "11513",
      "registrationNumber": "string",
      "registrationIssueDate": "2022-03-29",
      "registrationExpiryDate": "2025-12-30",
      "extra1": "string",
      "extra2": "string",
      "extra3": "string"
    }
  },
  "RemittanceDetails": {
    "SendingCountryCode": "KR",
    "PayoutCountryCode": "UK",
    "PayoutTypeCode": "BD",
    "PayoutBankCode": "IME0001969",
    "PayoutBankBranchCode": "BG",
    "PayoutCurrencyCode": "GBP",
    "SendingCurrencyCode": "USD",
    "PayoutAmount": "1000",
    "RemittancePurpose": "11414",
    "OtherPurposeOfRemittance": "Family Maintenance",
    "SourceOfFund": "11417",
    "OtherSourceOfFund": "Family maintenance",
    "Relationship": "11392",
    "OtherRelationship": "Sister",
    "Occupation": "11383",
    "OtherOccupation": "Other",
    "CalcBy": "P"
  },
  "PartnerTransactionId": "0000114"
}

Response example

JSON
{
  "responseCode": 100,
  "responseMessage": "Transaction is successful!",
  "data": {
    "imeControlNo": "779201792348",
    "partnerTransactionId": "2222122222201117",
    "status": "Hold",
    "serviceCharge": "05.00",
    "collectionAmount": "50.00",
    "transferAmount": "45.00",
    "payoutAmount": "33.00",
    "exRate": "00.7519"
  }
}
Monitoring

Transaction Status

Returns the current status of a transaction using the partner session and transaction identifiers.

POST/api/v1/Remit/getRemittanceStatus
ParameterTypeDescriptionRequirement
partnerSessionIdStringPartner session IDM
partnerTransactionIdStringPartner transaction IDM
imeControlNoStringIME control numberM

Request example

JSON
{
  "partnerSessionId": "PARTNER-XXX-SESSION-ID1",
  "imeControlNo": "779206107142",
  "partnerTransactionId": ""
}

Response example

JSON
{
  "responseCode": 100,
  "responseMessage": "Success",
  "data": {
    "imeControlNo": "779201792348",
    "status": "Hold",
    "message": "Transaction is waiting for approval!"
  }
}

Status meanings

HOLDCreated but not yet verified or processed.
UNPAIDVerified but not yet approved or credited.
POSTApproved and posted by the bank, pending beneficiary credit.
PAIDFunds credited to the beneficiary's account.
CANCELCancelled and will not be processed further.
Response codeStatus
100Success
101Failed
Inbound API Technical Documentation · IME London Remittance · Version 5.0.0