NAV
curl

Introduction

Daytona Capital Management HUB is a structured system that allows Pay-in-Partners, henceforth referred to as Agents to connect to various web based integrations on the DCM system. The Agent will receive DCM rates that will form part of a calculated value which will be passed on to their Customer.

Thereafter, the Agent can connect to DCM's end-point to create transactions with the intention of specifying the Destination country, along with the foreign currency calculated after receiving the rates. All agents can send foreign currency to the specified foreign countries, based on contractual agreements with DCM.

DCM will debit the Agents account based on the USD value of the foreign amount, this includes the calculated rate, with added mark-up at the point of transaction settlement. This added mark- up is subject to change without prior notice to the agents.

Differences between Inwards and outwards methods

Integration

Agents that will be integrating with DCM are advised to prepare the following before beginning the integration:

Testing environment

DCM testing environment is open to all agents integrating with DCM to send through test transaction data which will be transferred to the pay-out partner’s test environment.

DCM Testing environment endpoint:

https://dcmtest.nvizible.co.za/{Location}/{Resource}/

Production environment

DCM production environment constitutes the ability to create transactions with the intent on routing the transactions to the specified Pay-Out country based on the fields specified in the “Payload” section of this Integration Document. The production environment is a fully tested, robust platform with 24/7 access, and a dedicated production support team for any queries an Agent might have.

DCM Production environment endpoint:

https://dcm.daytonacap.com/v2/{Location}/{Resource}/

Authentication

DcmLogin

"DcmLogin" : {
        "userId": "*********"
}

All requests made to the DCM system will be authenticated with basic https authentication including the username and password given to the Agent once a contract is signed with DCM.

The DcmLogin object nested in the DcmRequest is used as additional authentication. The value of the userId payload parameter will be given to the agent once the contract has been signed with DCM.

Flow

image info

Inwards Methods (South African Account)

PostTransaction and RetryTransaction

DCM inwards example request

curl --location --request POST 'https://dcmtest.nvizible.co.za/api/postTransaction' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "ReferenceNo": "dcmqa10131409",
      "PayoutType": "BankAccount",
      "PayoutCountry": "ZA",
      "RoutingCode": "HPI001",
      "BankRoute": "HPI01",
      "ForeignCurrency": "ZAR",
      "ForeignAmount": "2500.00",
      "RemitPurpose": "Gift",
      "SenderFirstName": "Laveen",
      "SenderLastName": "Tepan",
      "SenderMSISDN": "0874464125",
      "SenderAddress": "70 Blue Street",
      "SenderAddressCountry": "PAK",
      "BeneficiaryFirstName": "Divey",
      "BeneficiaryLastName": "Jain",
      "BeneficiaryMsisdn": "0842234453",
      "BeneficiaryAccountNo": "123456789",
      "BeneficiaryBranchCode": "683000",
      "BeneficiaryAddress": "1234 Long Street",
      "BeneficiaryEmail" : "abc@test.com"
      "BeneficiaryNationalityCountryISOCode": "ZAF",
      "CustomerDateOfBirth": "1975-05-05",
      "CustomerIdExpiryDate": "2020-12-14",
      "SubAgent": "Originating Bank",
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Example response

{
  "DcmResponse": {
    "responseCode": "206",
    "responseMessage": "Success",
    "payoutPartnerRef": "HPI59F60FB8D1DB5",
    "DCode": "00001217008480681685",
    "payOutPartnerRefName": "HPTransactionId",
    "DcmTransactionFee": "0.00",
    "Rate": "14.567240000000",
    "payInPartnerRef": "dcmqa10131409"
  }
}

The PostTransaction endpoint is used to create transactions on the DCM server with the intent of specifying information needed to have the amount in foreign currency paid out to the specified foreign country. This is a 2-tier method, where the creation and confirmation of a transaction is combined into one method. The result of this method is a

The response also includes a DCode, which is to be stored as it will be used in future transactions (E.g. Retry & CheckStatus). The response payload will also include the rate used when calculating the USD equivalent of the foreign amount sent, which is debited from the Agent’s account.

Parameter Name Explanation Valid Fields Mandatory
ReferenceNo This is the Agents internal reference number Agent reference number should be between 12 & 16 numeric characters Yes
PayoutType The type of pay-out that will occur BankAccount COTC Mobile Wallet Yes
PayoutCountry The country code where the recipient will be collecting the funds ZA PK BD Etc. Yes
RoutingCode The route to the pay-out partner given to agent DCM001 Yes
BankRoute The bank route to the pay-out partners’ bank where the recipient will be collecting the funds JANA HPT02 HPKB Yes
ForeignCurrency The pay-out country’s’ currency in ISO3 format ZAR Yes
ForeignAmount The amount requested to be paid out in foreign currency 2500.00 Yes
RemitPurpose The purpose of the transaction being created Gift Migrant worker remittances (excluding compensation) Adjustments Reversals/Refund ETC. Yes
SenderFirstName The first name of the customer initiating the transaction Minimum = 4 Characters Maximum = 45 Characters Yes
SenderLastName The last name of the customer initiating the transaction Minimum = 4 Characters Maximum = 40 Characters Yes
SenderMSISDN The contact number of the customer initiating the transaction Valid Number between 8 & 22 digits Yes
SenderAddress The address of the customer initiating the transaction 1234 Test Road Yes
SenderAddressCountry The ISO3 country code where the customer initiating the transaction resides IND UAE PAK Yes
BeneficiaryFirstName The first name of the recipient collecting the funds in the pay-out country Minimum = 4 Characters Maximum = 45 Characters Yes
BeneficiaryLastName The last name of the recipient collecting the funds in the pay-out country Minimum = 4 Characters Maximum = 40 Characters Yes
BeneficiaryMSISDN The contact number of the recipient collecting the funds in the pay-out country Valid Number between 8 & 22 digits Yes
BeneficiaryAccountNo The bank account number of the beneficiary collecting the funds in the pay-out country 65165156228733 PK42UNIL0109000 On Bank Account
BeneficiaryBranchCode The branch code of the bank where the beneficiary will be collecting the funds BD030109 1073 Yes
BeneficiaryAddress The address where the beneficiary resides 123 Short Street Yes
BeneficiaryEmail The email address of the of the beneficiary abc@test.com Yes
BeneficiaryNationalityCountryISOCode The ISO3 country code of the beneficiary ZAF Yes
CustomerDateOfBirth Customer Date of Birth 1975-05-05 Date Format
CustomerIdExpiryDate The date when the customers ID will expire 2022-01-31 Yes
SubAgent The name of the originating money transfer operator Originating Bank Aggregators Only

URL for Post Transaction:

QA :https://dcmtest.nvizible.co.za/api/postTransaction

Production :https://dcm.daytonacap.com/v2/api/postTransaction

URL for Retry Transaction:

QA :https://dcmtest.nvizible.co.za/api/retry

Production :https://dcm.daytonacap.com/v2/api/retry

CheckStatus

DCM inwards example request

curl --location --request POST 'https://dcmtest.nvizible.co.za/api/checkStatus' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "ReferenceNo": "dcmqa101296",
      "RoutingCode": "HPI001",
      "BankRoute": "HPI01",
      "Action": "checkStatus",
      "DCode": "00001296477885430696",
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Example response

{
  "DcmResponse": {
    "responseCode": "206",
    "responseMessage": "Sent to partner. Awaiting confirmation",
    "payoutPartnerRef": "HPI38305697CC6BCE",
    "DCode": "00006027797912219463",
    "payOutPartnerRefName": "HPTransactionId",
    "DcmTransactionFee": "0.00",
    "Rate": "14.567240000000",
    "payInPartnerRef": "dcmqa101287"
  }
}

The checkStatus endpoint is used to check the status of the transaction, after doing a PostTransaction call. The check status method will return the current status of the transaction within the DCM system, or will return the status of the transaction with the pay-out partner’s system.

Parameter Name Explanation Valid Fields Mandatory
ReferenceNo This is the Agents internal reference number Agents reference number should be between 14 & 20 characters Yes
RoutingCode The route to the pay-out partner given to agent DCM001 Yes
BankRoute The bank route to the pay-out partners’ bank where the recipient will be collecting the funds JANA HPT02 HPKB Yes
DCode DCM’s internal reference number to keep track of the transaction 00001675199527373774 Yes

URL for Check Status:

QA :https://dcmtest.nvizible.co.za/api/checkStatus

Production :https://dcm.daytonacap.com/v2/api/checkStatus

CancelTransaction

Please note that Cancellation will be a manual process unless advised by DCM Team, please liaise with the DCM support team.

CheckAgentBalance

Request example

curl --location --request POST 'https://dcmtest.nvizible.co.za/api/checkAgentBalance' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Example response

{
  "DcmResponse": {
    "responseCode": "200",
    "responseMessage": "Success",
    "payoutPartnerRef": "",
    "DCode": "",
    "localCurrency": "ZAR",
    "countryCode": "ZA",
    "foreignBalance": "14867.150000000000",
    "usdBalance": "1000.000000000000",
    "payOutPartnerRefName": "",
    "payInPartnerRef": ""
  }
}

The checkAgentBalance endpoint can be called by the Agent at any interval, usually every 3 hours, to check the balance of the Agent’s account with DCM in USD and the equivalent balance in the Agent’s local currency.

URL for checkAgentBalance:

QA :https://dcmtest.nvizible.co.za/api/checkAgentBalance

Production :https://dcm.daytonacap.com/v2/api/checkAgentBalance

GetAgentRates

Request example

curl --location --request GET 'https://dcmtest.nvizible.co.za/api/getagentrates' \
--header 'Authorization: Basic encodedUserPass'

Example response

{
  "responseCode": 200,
  "DcmResponse": [
    {
      "Currency": "XOF",
      "Rate": 429
    },
    {
      "Currency": "USD",
      "Rate": 1
    },
    {
      "Currency": "EUR",
      "Rate": 1.187
    }
  ]
}

The getAgentRates endpoint can be called by the Agent at any interval, this method is to check the current rate of the destination currency with DCM in USD. We recommend checking the current rate as per agreement with DCM Team.

URL for getAgentRate::

QA :https://dcmtest.nvizible.co.za/api/getagentrates

Production :https://dcm.daytonacap.com/v2/api/getagentrates

GetAgentBanks

Request example

curl --location --request GET 'https://dcmtest.nvizible.co.za/api/getAgentBanks' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Example response

{
  "responseCode": "200",
  "DcmResponse": {
    "FromDate": {
      "date": "2016-07-29 15:49:52.000000",
      "timezone_type": 3,
      "timezone": "Africa/Johannesburg"
    },
    "Updated": [
      {
        "BankName": "Janata Bank",
        "BankRoute": "JANA",
        "BankType": "COTC",
        "AllowsQuote": false,
        "bankBranches": [
          {
            "BranchName": null,
            "BranchCode": null,
            "Country": "BANGLADESH",
            "Description": null,
            "BankRoute": "JANA"
          }
        ]
      },
      {
        "BankName": "Brac Bank",
        "BankRoute": "MT12",
        "BankType": "COTC",
        "AllowsQuote": true,
        "bankBranches": [
          {
            "BranchName": "HEAD OFFICE",
            "BranchCode": "BD010001",
            "Country": "BANGLADESH",
            "Description": "Use UAT file for beneficiary details",
            "BankRoute": "MT12"
          },
          {
            "BranchName": "TEJGAON DHAKA",
            "BranchCode": "BD0301029",
            "Country": "BANGLADESH",
            "Description": "Use UAT file for beneficiary details",
            "BankRoute": "MT12"
          }
        ]
      },
      {
        "BankName": "Capital Bank Botswana",
        "BankRoute": "CBBP",
        "BankType": "COTC",
        "AllowsQuote": false,
        "bankBranches": [
          {
            "BranchName": null,
            "BranchCode": null,
            "Country": "BOTSWANA",
            "Description": null,
            "BankRoute": "CBBP"
          }
        ]
      },
      {
        "Disabled": [
          {
            "BankName": "Post Office Savings Bank",
            "BankRoute": "MT37",
            "BankType": "BankAccount",
            "AllowsQuote": true,
            "bankBranches": [
              {
                "BranchName": "ALL BRANCHES",
                "BranchCode": "081",
                "Country": "SINGAPORE",
                "Description": "Use UAT file for beneficiary details",
                "BankRoute": "MT37"
              }
            ]
          }
        ]
      }
    ]
  }
}

The getAgentBanks endpoint can be called by the Agent, this method is to check the current banks with corridors that DCM offers to the Agent. The getBanks call will provide the agent with different responses when doing the call

  1. Initial Call – the initial call will result in getting all of the banks DCM has to offer the agent, The agent will need to store the list of banks on their system after the first call as the next calls will not include the initial list

  2. Any calls after the initial getBanks call will result in either an updated bank list or disabled bank list which the agent will need to update on their side once called if any data has changed.

  3. The updated and disable keys will always remain in the response, even if the list is blank or with data

The Bank response will include the following for each bank:

Each bank that has a branch/branches associated with it will include the following:

URL for getAgentBanks

QA :https://dcmtest.nvizible.co.za/api/getAgentBanks

Production :https://dcm.daytonacap.com/v2/api/getAgentBanks

Outwards Methods

Agent PostTransaction

DCM outwards example request

curl --location --request POST 'https://dcmtest.nvizible.co.za/api/postTransaction' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "PayoutType": "BankAccount",
      "ReferenceNo": "11422000000056",
      "ForeignCurrency": "BDT",
      "ForeignAmount": "1200.89",
      "RemitPurpose": "Family",
      "BeneficiaryFirstName": "Fred Stoney",
      "BeneficiaryLastName": "Flintstone",
      "BeneficiaryMSISDN": "8801758724781",
      "BeneficiaryNationalityCountryISOCode": "BGD",
      "BeneficiaryAccountNo": "123456789",
      "BeneficiaryBranchCode": "BD0301029",
      "BranchCode": "BD0301029",
      "BeneficiaryBranchName": "DHAKA",
      "BeneficiaryAddress": "Bangladesh",
      "SenderFirstName": "Mickey",
      "SenderLastName": "Mouse",
      "SenderMSISDN": "44835578009",
      "SenderAddress": "United Kingdom",
      "SenderAddressStreet": "Aurora Street",
      "SenderCountryCode": "GB",
      "SenderAddressCity": "London",
      "SenderNationalityCountryISOCode": "GBR",
      "SenderAddressCountry": "United Kingdom",
      "SenderCurrency": "GBP",
      "SenderCountry": "GBR",
      "SenderCity": "London",
      "SenderAddressZIP": "tH4 5BX",
      "SenderGender": "M",
      "SenderProvinceState": "Oxfordshire",
      "Suburb": "London",
      "StreetNo": "69",
      "BuildingNo": " 69",
      "SenderIdCountryISOCode": "GBR",
      "SenderId": "9307068907098",
      "CustomerDateOfBirth": "1990-01-08",
      "CustomerIdExpiryDate": "2022-10-10",
      "CustomerNationalityCode": "GB",
      "CustomerIdIssueDate": "1995-05-05",
      "CustomerIDType": "53",
      "CustomerAddressCity": "London",
      "CustomerIdIssuedAt": "GB",
      "CustomerAddressCountryCode": "GB",
      "IdType": "2",
      "PayoutCountry": "BD",
      "BranchName": "TEJGAON DHAKA",
      "AccountTtile": "Brac Bank Limited",
      "RoutingCode": "DCM001",
      "BankRoute": "MT12",
      "SubAgent": "Originating Bank",
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Example response

{
  "DcmResponse": {
    "responseCode": "200",
    "responseMessage": "Success",
    "payoutPartnerRef": "HPY000001061",
    "DCode": "00001786794636911470",
    "payOutPartnerRefName": "PIN",
    "payInPartnerRef": "11422xxxxxx"
  }
}

The PostTransaction endpoint is used to create transactions on the DCM server with the intent of specifying information needed to have the amount in foreign currency paid out to the specified foreign country. This is a 2-tier method, where the creation and confirmation of a transaction is combined into one method. The result of this method is a

The response also includes a DCode, which is to be stored as it will be used in future transactions (E.g. CheckStatus). The response payload will also include the rate used when calculating the USD equivalent of the foreign amount sent, which is debited from the Agent’s account.

Parameter Name Explanation Valid Fields Mandatory
PayoutType The type of pay-out that will occur BankAccount COTC Mobile Wallet Yes
ReferenceNo This is the Agents internal reference number Agent reference number should be between 12 & 16 numeric characters Yes
ForeignCurrency The pay-out country’s’ currency in ISO3 format ZAR Yes
ForeignAmount The amount requested to be paid out in foreign currency 2500.00 Yes
RemitPurpose The purpose of the transaction being created Gift Migrant worker remittances (excluding compensation) Adjustments Reversals/Refund ETC. Yes
BeneficiaryFirstName The first name of the recipient collecting the funds in the pay-out country Minimum = 4 Characters Maximum = 45 Characters Yes
BeneficiaryLastName The last name of the recipient collecting the funds in the pay-out country Minimum = 4 Characters Maximum = 40 Characters Yes
BeneficiaryMSISDN The contact number of the recipient collecting the funds in the pay-out country Valid Number between 8 & 22 digits Yes
BeneficiaryNationalityCountryISOCode The ISO3 country code of the beneficiary ZAF Yes
BeneficiaryAccountNo The bank account number of the beneficiary collecting the funds in the pay-out country 65165156228733 PK42UNIL0109000 On Bank Account
BranchCode / BeneficiaryBranchCode The branch code of the bank where the beneficiary will be collecting the funds BD030109 1073 Yes
BeneficiaryBranchName The branch code of the bank where the beneficiary will be collecting the funds Head Office Kerela On Bank Account if needed by bankroute
BeneficiaryAddress The address where the beneficiary resides 123 Short Street Yes
SenderFirstName The first name of the customer initiating the transaction Minimum = 4 Characters Maximum = 45 Characters Yes
SenderLastName The last name of the customer initiating the transaction Minimum = 4 Characters Maximum = 40 Characters Yes
SenderIdCountryISOCode The ISO 3 code of the customer (Remitters) Country ZAF, GBR, ARE, KWT. etc Yes
SenderMSISDN The contact number of the customer initiating the transaction Valid Number between 8 & 22 digits Yes
SenderAddress The address of the customer initiating the transaction 1234 Test Road Yes
SenderAddressStreet The street where the customer initiating the transaction resides 69 Baker Street, 124 Pluto Road, Yes
SenderProvinceState The State/Province of the customer initiating the transaction OxfordShire Cape Town Yes
SenderCountryCode The ISO 2 country code of the customer initiating the transaction ZA PK BD Etc. Yes
SenderAddressCity The city where the customer initiating the transaction resides Johannesburg London Yes
SenderAddressZIP The zip code where the customer initiating the transaction resides NW1 3AU Yes
SenderNationalityCountryISOCode The ISO 3 code of the customers nationality ZAF GBR Yes
SenderAddressCountry The ISO3 country code where the customer initiating the transaction resides IND UAE PAK Yes
SenderCountry The ISO 3 country code of the customer initiating the transaction ZAF GBR Yes
SenderCurrency The Currency code of the sender ZAR BBP Yes
SenderGender The Gender of the customer initiating the transaction Male Female Optional
Suburb The Suburb of the customer initiating the transaction London Johannesburg Yes
StreetNo The Street Number of the customer initiating the transaction 69 Yes
BuildingNo The Building Number of the customer initiating the transaction 78 01 Yes
SenderId The Identification number of the customer 7901014908082 A123 HB587 Yes
CustomerDateOfBirth Customer Date of Birth 1975-05-05 Date Format
CustomerIdExpiryDate The date when the customers ID will expire 2022-01-31 Yes
CustomerNationalityCode The nationality code of the customer initiating the transaction ZA PK BD Etc. Yes
CustomerIDType The ID type of the customer 53 for customers with ID document 3 for customers with Passports or Asylums Yes
CustomerAddressCity The city where the customer resides Centurion London Yes
CustomerIdIssuedAt The country where the ID was issued ZA PK BD Yes
IdType Sender Id Type 0 = Id Document 53 = Passport Yes
PayoutCountry The country code where the recipient will be collecting the funds ZA PK BD Etc. Yes
RoutingCode The route to the pay-out partner given to agent DCM001 Yes
BankRoute The bank route to the pay-out partners’ bank where the recipient will be collecting the funds JANA HPT02 HPKB Yes
SubAgent The name of the originating money transfer operator Originating Bank Aggregators Only

URL for Post Transaction:

QA :https://dcmtest.nvizible.co.za/api/postTransaction

Production :https://dcm.daytonacap.com/v2/api/postTransaction

URL for Retry Transaction:

QA :https://dcmtest.nvizible.co.za/api/retry

Production :https://dcm.daytonacap.com/v2/api/retry

Agent CheckStatus

Example request

curl --location --request POST 'https://dcmtest.nvizible.co.za/api/checkStatus' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "ReferenceNo": "11422xxxxxxxxxxx",
      "DCode": "00001786794636911470",
      "RoutingCode": "DCM001",
      "BankRoute": "STBL",
      "DcmLogin": {
        "userId": "HEADOFFICE"
      }
    }
  ]
}'

Example response

{
  "DcmResponse": {
    "responseCode": "206",
    "responseMessage": " Sent to Partner. Awaiting Confirmation",
    "payoutPartnerRef": "HPY000001061",
    "DCode": "00001786794636911470",
    "payOutPartnerRefName": "PIN",
    "payInPartnerRef": "11422xxxxxx"
  }
}

The checkStatus endpoint is used to check the status of the transaction, after doing a PostTransaction call. The check status method will return the current status of the transaction within the DCM system, or will return the status of the transaction with the pay-out partner’s system.

Parameter Name Explanation Valid Fields Mandatory
ReferenceNo This is the Agents internal reference number Agents reference number should be between 14 & 20 characters Yes
RoutingCode The route to the pay-out partner given to agent DCM001 Yes
BankRoute The bank route to the pay-out partners’ bank where the recipient will be collecting the funds JANA HPT02 HPKB Yes
DCode DCM’s internal reference number to keep track of the transaction 00001675199527373774 Yes

URL for Check Status:

QA :https://dcmtest.nvizible.co.za/api/checkStatus

Production :https://dcm.daytonacap.com/v2/api/checkStatus

Agent CancelTransaction

Please note that Cancellation will be a manual process unless advised by DCM Team, please liaise with the DCM support team.

Agent CheckAgentBalance

Example request

curl --location --request GET 'https://dcmtest.nvizible.co.za/api/checkAgentBalance' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Example response

{
  "DcmResponse": {
    "responseCode": "200",
    "responseMessage": "Success",
    "payoutPartnerRef": "",
    "DCode": "",
    "localCurrency": "ZAR",
    "countryCode": "ZA",
    "foreignBalance": "14867.150000000000",
    "usdBalance": "1000.000000000000",
    "payOutPartnerRefName": "",
    "payInPartnerRef": ""
  }
}

The checkAgentBalance endpoint can be called by the Agent at any interval, usually every 3 hours, to check the balance of the Agent’s account with DCM in USD and the equivalent balance in the Agent’s local currency.

URL for checkAgentBalance:

QA :https://dcmtest.nvizible.co.za/api/checkAgentBalance

Production :https://dcm.daytonacap.com/v2/api/checkAgentBalance

Agent GetAgentRates

Get Agent Rates - Example request

curl --location --request GET 'https://dcmtest.nvizible.co.za/api/getagentrates' \
--header 'Authorization: Basic encodedUserPass'

Get Agent Rates - Example response

{
  "responseCode": 200,
  "DcmResponse": [
    {
      "Currency": "XOF",
      "Rate": 429
    },
    {
      "Currency": "USD",
      "Rate": 1
    },
    {
      "Currency": "EUR",
      "Rate": 1.187
    }
  ]
}

The getAgentRates endpoint can be called by the Agent at any interval, this method is to check the current rate of the destination currency with DCM in USD. We recommend checking the current rate as per agreement with DCM Team.

URL for getAgentRate:

QA :https://dcmtest.nvizible.co.za/api/getagentrates

Production :https://dcm.daytonacap.com/v2/api/getagentrates

Agent GetAgentRates V3

Get Agent Rates v3 - Example request

curl --location --request GET 'https://dcmtest.nvizible.co.za/api/getagentratesv3'
--header 'Authorization: Basic encodedUserPass'

Get Agent Rates v3 - Example response

{
  "responseCode": 200,
  "DcmResponse": [
    {
      "BankRates": {
        "BankAccount": [
          {
            "MT12": 86.598
          }
        ],
        "Mobile Wallet": [],
        "COTC": [
          {
            "JANA": 85.768
          }
        ]
      },
      "Currency": "BDT",
      "Rate": 84.051
    }
  ]
}

The getAgentRates version 3 endpoint can be called by the Agent at any interval, this method is to check the current rate of the destination currency and the current rate of the bank route with DCM, in USD. We recommend checking the current rate as per agreement with DCM Team.

URL for getAgentRateV3:

QA :https://dcmtest.nvizible.co.za/api/getagentratesv3

Production :https://dcm.daytonacap.com/v2/api/getagentratesv3

Agent GetAgentBanks

Get Agent Banks - Example request

curl --location --request GET 'https://dcmtest.nvizible.co.za/api/getAgentBanks' \
--header 'Authorization: Basic encodedUserPass' \
--header 'Content-Type: application/json' \
--data-raw '{
  "DcmRequest": [
    {
      "DcmLogin": {
        "userId": "*********"
      }
    }
  ]
}'

Get Agent Banks - Example response

{
  "responseCode": "200",
  "DcmResponse": {
    "FromDate": {
      "date": "2016-07-29 15:49:52.000000",
      "timezone_type": 3,
      "timezone": "Africa/Johannesburg"
    },
    "Updated": [
      {
        "BankName": "Janata Bank",
        "BankRoute": "JANA",
        "BankType": "COTC",
        "AllowsQuote": false,
        "bankBranches": [
          {
            "BranchName": null,
            "BranchCode": null,
            "Country": "BANGLADESH",
            "Description": null,
            "BankRoute": "JANA"
          }
        ]
      },
      {
        "BankName": "Brac Bank",
        "BankRoute": "MT12",
        "BankType": "COTC",
        "AllowsQuote": true,
        "bankBranches": [
          {
            "BranchName": "HEAD OFFICE",
            "BranchCode": "BD010001",
            "Country": "BANGLADESH",
            "Description": "Use UAT file for beneficiary details",
            "BankRoute": "MT12"
          },
          {
            "BranchName": "TEJGAON DHAKA",
            "BranchCode": "BD0301029",
            "Country": "BANGLADESH",
            "Description": "Use UAT file for beneficiary details",
            "BankRoute": "MT12"
          }
        ]
      },
      {
        "BankName": "Capital Bank Botswana",
        "BankRoute": "CBBP",
        "BankType": "COTC",
        "AllowsQuote": false,
        "bankBranches": [
          {
            "BranchName": null,
            "BranchCode": null,
            "Country": "BOTSWANA",
            "Description": null,
            "BankRoute": "CBBP"
          }
        ]
      },
      {
        "Disabled": [
          {
            "BankName": "Post Office Savings Bank",
            "BankRoute": "MT37",
            "BankType": "BankAccount",
            "AllowsQuote": true,
            "bankBranches": [
              {
                "BranchName": "ALL BRANCHES",
                "BranchCode": "081",
                "Country": "SINGAPORE",
                "Description": "Use UAT file for beneficiary details",
                "BankRoute": "MT37"
              }
            ]
          }
        ]
      }
    ]
  }
}

The getAgentBanks endpoint can be called by the Agent, this method is to check the current banks with corridors that DCM offers to the Agent. The getBanks call will provide the agent with different responses when doing the call

  1. Initial Call – the initial call will result in getting all of the banks DCM has to offer the agent, The agent will need to store the list of banks on their system after the first call as the next calls will include the initial list

  2. Any calls after the initial getBanks call will result in either an updated bank list or disabled bank list which the agent will need to update on their side once called if any data has changed.

  3. The updated and disable keys will always remain in the response, even if the list is blank or with data

The Bank response will include the following for each bank:

Each bank that has a branch/branches associated with it will include the following:

URL for getAgentBanks

QA :https://dcmtest.nvizible.co.za/api/getAgentBanks

Production :https://dcm.daytonacap.com/v2/api/getAgentBanks

Quote & Pay

The Quote and Pay endpoint can be called by the Agent at any interval, this method is to check the current rate of the destination currency with DCM in USD. We recommend to check the current rate as per agreement with DCM Team.

QA :https://dcmtest.nvizible.co.za/api/postTransaction

Production :https://dcm.daytonacap.com/v2/api/postTransaction

Payload parameters The payload parameters for the get quote function is the same as the post transaction and cancel transaction payload, The Agent will need to pass one additional parameter in the payload called SecondaryAction

Get Quote

Get Quote - Example payload

{
  "DcmRequest": [
    {
      "PayoutType": "COTC",
      "SecondaryAction": "GetQuote",
      "ReferenceNo": "Movee100000532",
      "ForeignCurrency": "BDT",
      "ForeignAmount": "1200.89",
      "RemitPurpose": "Family",
      "BeneficiaryFirstName": "Bruce",
      "BeneficiaryLastName": "Banner",
      "BeneficiaryMSISDN": "8801758724781",
      "BeneficiaryNationalityCountryISOCode": "BGD",
      "BeneficiaryBranchCode": "PPIBDANY00",
      "BeneficiaryBranchName": "Head Office",
      "BeneficiaryAddress": "Bangladesh",
      "SenderFirstName": "Mickey",
      "SenderLastName": "Mouse",
      "SenderMSISDN": "44835578009",
      "SenderAddress": "United Kingdom",
      "SenderAddressStreet": "Aurora Street",
      "SenderCountryCode": "GB",
      "SenderAddressCity": "London",
      "SenderNationalityCountryISOCode": "GBR",
      "SenderAddressCountry": "United Kingdom",
      "SenderCurrency": "GBP",
      "SenderCountry": "GBR",
      "SenderCity": "London",
      "SenderAddressZIP": "tH4 5BX",
      "SenderGender": "M",
      "SenderProvinceState": "Oxfordshire",
      "Suburb": "London",
      "StreetNo": "69",
      "BuildingNo": "69",
      "SenderIdCountryISOCode": "GBR",
      "SenderId": "9307068907098",
      "CustomerDateOfBirth": "1990-01-08",
      "CustomerIdExpiryDate": "2022-10-10",
      "CustomerNationalityCode": "GB",
      "CustomerIdIssueDate": "1995-05-05",
      "CustomerIDType": "53",
      "CustomerAddressCity": "London",
      "CustomerIdIssuedAt": "GB",
      "CustomerAddressCountryCode": "GB",
      "IdType": "2",
      "PayoutCountry": "BD",
      "BranchCode": "PPIBDANY00",
      "BranchName": "Head Office",
      "AccountTtile": "Janata Bank",
      "RoutingCode": "DCM001",
      "BankRoute": "JANA",
      "SubAgent": "Originating Bank",
      "DcmLogin": {
        "userId": "{{AgentUserId}}"
      }
    }
  ]
}

Get Quote - Example Response

{
  "DcmResponse": {
    "responseCode": "200",
    "responseMessage": "Success",
    "payoutPartnerRef": "1900016055",
    "DCode": "GetQuote_TRANSACTION",
    "payOutPartnerRefName": "",
    "payInPartnerRef": "11422000000056"
  }
}

The get quote function is when an agent creates a quote for the first time. The quote is based off a specific list of banks that allow the quote function. The list will be provided to the agent via an excel list or the get banks call.

When doing a quote function you will need to insert the parameter SecondaryAction: GetQuote in the post transaction method.

Confirm Quote

Confirm Quote - Example payload

{
    "DcmRequest": [
        {
            "PayoutType": "COTC",
            "SecondaryAction": "confirmQuote",
            "ReferenceNo": "Movee100000532",
            "ForeignCurrency": "BDT",
            "ForeignAmount": "1200.89",
            "RemitPurpose": "Family",
            "BeneficiaryFirstName": "Bruce",
            "BeneficiaryLastName": "Banner",
            "BeneficiaryMSISDN": "8801758724781",
            "BeneficiaryNationalityCountryISOCode": "BGD",
            "BeneficiaryBranchCode": "PPIBDANY00",
            "BeneficiaryBranchName": "Head Office",
            "BeneficiaryAddress": "Bangladesh",
            "SenderFirstName": "Mickey",
            "SenderLastName": "Mouse",
            "SenderMSISDN": "44835578009",
            "SenderAddress": "United Kingdom",
            "SenderAddressStreet": "Aurora Street",
            "SenderCountryCode": "GB",
            "SenderAddressCity": "London",
            "SenderNationalityCountryISOCode": "GBR",
            "SenderAddressCountry": "United Kingdom",
            "SenderCurrency": "GBP",
            "SenderCountry": "GBR",
            "SenderCity": "London",
            "SenderAddressZIP": "tH4 5BX",
            "SenderGender": "M",
            "SenderProvinceState": "Oxfordshire",
            "Suburb": "London",
            "StreetNo": "69",
            "BuildingNo": "69",
            "SenderIdCountryISOCode": "GBR",
            "SenderId": "9307068907098",
            "CustomerDateOfBirth": "1990-01-08",
            "CustomerIdExpiryDate": "2022-10-10",
            "CustomerNationalityCode": "GB",
            "CustomerIdIssueDate": "1995-05-05",
            "CustomerIDType": "53",
            "CustomerAddressCity": "London",
            "CustomerIdIssuedAt": "GB",
            "CustomerAddressCountryCode": "GB",
            "IdType": "2",
            "PayoutCountry": "BD",
            "BranchCode": "PPIBDANY00",
            "BranchName": "Head Office",
            "AccountTtile": "Janata Bank",
            "RoutingCode": "DCM001",
            "BankRoute": "JANA",
            "SubAgent": "Originating Bank",
            "DcmLogin": {
                "userId": "{{AgentUserId}}"
            }
        }
    ]
}

Confirm Quote - Example response

{
    "DcmResponse": {
        "responseCode": "200",
        "responseMessage": " Success ",
        "payoutPartnerRef": "11422000000056",
        "DCode": "000213xxxxxxxxxx",
        "DcmTransactionFee":"0.00",
        "Rate":"",
        "payOutPartnerRefName": "",
        "payInPartnerRef": ""
    }
}

The confirm quote function is used for the confirmation of a quote that has been created.

You will need to insert the parameter SecondaryAction: ConfirmQuote in the post transaction method as with the payload example payload.

Note: The quote is valid for 6 hours after creation.

Cancel Quote

The cancel quote function is used to cancel a quote that has been created.

You will need to insert the parameter “SecondaryAction: CancelQuote” in the cancel transaction method with the payload "SecondaryAction": "CancelQuote",.

Cancel Quote - Example payload

{
    "DcmRequest": [
        {
            "SecondaryAction": "CancelQuote",
            "ReferenceNo": "11422000000056",
            "RoutingCode": "DCM001",
            "DcmLogin": {
                "userId": " HP0001"
            }
        }
    ]
}

Cancel Quote - Example response

{
    "DcmResponse": {
        "responseCode": "417",
        "responseMessage": "Transaction Cancelled",
        "payoutPartnerRef": "1900016055",
        "DCode": "CancelQuote_TRANSACTION",
        "payOutPartnerRefName": "",
        "payInPartnerRef": "11422000000056"
    }
}

Quote & Pay Notes

Response codes

Response Code Description
200 Sent to partner. Transaction Confirmed
206 Sent to partner. Awaiting confirmation
207 Transaction is pending cancellation
208 Transaction created successfully. Credit limit Low
400 Sent to partner. Invalid Request
412 Sent to partner. Transaction Failed
417 Transaction cancelled
449 Transaction not processed, requires retry
500 Internal Server Error
501 Not Implemented

Response code explanation

200 - When an Agent receives a 200 response code, the request sent to DCM was then handled successfully, and the following types are true:

206 - When an Agent receives a 206 response code, the request was sent to DCM but is pending processing by the pay-out partner. The next step to be taken is to send a checkStatus request to DCM, which will return the status of the transaction.

207 - When an Agent receives a 207 response code, the cancel request was sent to DCM and is waiting for the response to check if the transaction can be cancelled Send a checkStatus request to check if the transaction has been cancelled or not Check with DCM support team on status of pending cancellations.

400 and 412 - When an Agent receives a 400 or 412 response code, the request was sent to DCM but failed with either the DCM system, or the pay-out partner. The 400/412-response error code is a final state error. The Transaction is unable to be paid out in the foreign country and no further action can be taken on the transaction.

417 - This response code indicates that the transaction has already been cancelled on the DCM system. This error code is also a final error state as no action can be taken on the transaction. The transaction can no longer be re-initiated, and the transaction value has already been credited back into the Agent’s ledger with DCM.

449 - When an Agent receives a 449 response code on a check status request, the transaction has not been processed and the Retry functionality should be used on the transaction.

500 - When an Agent receives a 500 response code, it indicates that the DCM server failed to process the transaction, and an Agent should send a checkStatus request to see what status the transaction is currently in.

501 - When an Agent receives a 501 response code, it indicates that a method has not been implemented on the DCM server, and an Agent should check the Status of the transaction to see what status the transaction is currently in.

Bank Routes & Corridors

The DCM hub provides agents with multiple corridors and pay-out points based on the agreed signed contract with DCM. When integrating with the system the agent should take note that DCM has multiple endpoints and integrations. Each endpoint is defined using a BankRoute, which is very important as it allows us to know which endpoint the transaction should route through. The different BankRoutes and corridors will be provided by the DCM team in an excel file.

The Bank list provided will enable the agent to see 3 tabs on the Excel sheet.

Country Break Down List of all countries available on DCM
Bank Codes List of Banks, Countries, BankRoutes and Payout Types
Consolidated Branches List of Banks, Countries, BankRoutes, Branch Name, Branch Code and Payout Types for all endpoints on DCM

This is the list that must be imported into your system

When integrating with the DCM please take note of the comments or notes on the excel file as you will see that some BankRoutes would require more specific or different details than the others.

Examples:

Payout Types

DCM has various payout type endpoints. These types of payments will need specific detail when sending to each payout type.

Below is a guide of the mandatory fields for each payout type:

Bank Account (bankaccount)

Cash Pick Up (COTC)

Mobile Wallet ( Mobile Wallet)

Value added services/ Utility Bills (VAS)

Prepaid Top up/ Airtime (Prepaid)

Payload parameters

Both inwards and outwards

Parameter Name Validation Request Explanation Valid Fields Mandatory
BeneficiaryAccountNo On PayoutType “BankAccount” Required The bank account number of the beneficiary collecting the funds in the pay-out country 65165156228733 PK42UNIL0109000 On Bank Account
BeneficiaryAddress Post
Retry
Cancel
The address where the beneficiary resides 123 Short Street Yes
BeneficiaryFirstName Post
Retry
Cancel
The first name of the recipient collecting the funds in the pay-out country Minimum = 4 Characters Maximum = 45 Characters Yes
BeneficiaryLastName Post
Retry
Cancel
The last name of the recipient collecting the funds in the pay-out country Minimum = 4 Characters Maximum = 40 Characters Yes
BeneficiaryMSISDN Post
Retry
Cancel
The contact number of the recipient collecting the funds in the pay-out country Valid Number between 8 & 22 digits Yes
BeneficiaryNationalityCountryISOCode Post
Retry
Cancel
The ISO3 country code of the beneficiary ZAF Yes
CustomerDateOfBirth Post
Retry
Cancel
Customer Date of Birth 1975-05-05 Date Format
ForeignAmount Post
Retry
Cancel
The amount requested to be paid out in foreign currency 2500.00 Yes
ForeignCurrency Post
Retry
Cancel
The pay-out country’s’ currency in ISO3 format ZAR Yes
PayoutType Post
Retry
Cancel
The type of pay-out that will occur BankAccount COTC Mobile Wallet Yes
ReferenceNo Post
Retry
Cancel
This is the Agents internal reference number Agents reference number should be between 14 & 20 characters Yes
RemitPurpose Post
Retry
Cancel
The purpose of the transaction being created Gift Migrant worker remittances (excluding compensation) Adjustments Reversals/Refund ETC. Yes
SenderAddress Post
Retry
Cancel
The address of the customer initiating the transaction 1234 Test Road Yes
SenderAddressCountry Post
Retry
Cancel
The ISO3 country code where the customer initiating the transaction resides IND UAE PAK Yes
SenderFirstName Post
Retry
Cancel
The first name of the customer initiating the transaction Minimum = 4 Characters Maximum = 45 Characters Yes
SenderGender Post
Retry
Cancel
The Gender of the customer initiating the transaction Male Female Optional
SenderLastName Post
Retry
Cancel
The last name of the customer initiating the transaction Minimum = 4 Characters Maximum = 40 Characters Yes
SenderMSISDN Post
Retry
Cancel
The contact number of the customer initiating the transaction Valid Number between 8 & 22 digits Yes
DCode Retry
Cancel
DCM’s internal reference number to keep track of the transaction 00001675199527373774 Yes
PayoutCountry Post
Retry
Cancel
The country code where the recipient will be collecting the funds ZA PK BD Etc. Yes
RoutingCode Post
Retry
Cancel
Check Status
All Requests required
The route to the pay-out partner given to agent DCM001 Yes
BankRoute Post
Retry
Cancel
Check Status
All Requests required
The bank route to the pay-out partners’ bank where the recipient will be collecting the funds JANA HPT02 HPKB Yes
SubAgent Post
Retry
Cancel
The name of the originating money transfer operator Originating Bank Aggregators Only

Specific to inwards

Parameter Name Validation Request Explanation Valid Fields Mandatory
BeneficiaryBranchCode On PayoutType “BankAccount” Required if given The branch code of the bank where the beneficiary will be collecting the funds BD030109 1073 Yes
BeneficiaryEmail Post
Retry
Cancel
The email address of the of the beneficiary abc@test.com Optional
BeneficiaryGender Post
Retry
Cancel
The Gender of the beneficiary Male Female Optional
BeneficiaryId Post
Retry
Cancel
The Identification number of the beneficiary 7901014908082 A123 HB587 String Min 4 Max 50
BeneficiaryIdType Post
Retry
Cancel
The Identification document type of the beneficiary RSA ID Yes
IdType Post
Retry
Cancel
Sender Id Type 0 = Id Document 53 = Passport Yes
SenderEmail Post
Retry
Cancel
The email address of the of the customer initiating the transaction abc@test.com Optional

Specific to outwards

Parameter Name Validation Request Explanation Valid Fields Mandatory
AccountTitle On PayoutType “BankAccount” Required The name of the bank account, if the pay-out type is bankaccount John Snow On Bank Account
BeneficiaryBranchName On PayoutType “BankAccount ” Required if given The branch code of the bank where the beneficiary will be collecting the funds Head Office Kerela On Bank Account if needed by bankroute
BranchCode BeneficiaryBranchCode On PayoutType “BankAccount & prepaid” Required if given The branch code of the bank where the beneficiary will be collecting the funds BD0301029 1073 On Bank Account and prepaid if needed by bankroute
BuildingNo Post
Retry
Cancel
The Building Number of the customer initiating the transaction 78 01 Yes
CustomerAddressCity Post
Retry
Cancel
The city where the customer resides Centurion London Yes
CustomerIdExpiryDate Post
Retry
Cancel
The date when the customers ID will expire 2022-01-31 Yes
CustomerIdIssueDate Post
Retry
Cancel
The date when the customers ID was issued 1998-01-01 Yes
CustomerIdIssuedAt Post
Retry
Cancel
The country where the ID was issued ZA PK BD Yes
CustomerIDType Post
Retry
Cancel
The ID type of the customer 53 for customers with ID document 3 for customers with Passports or Asylums Yes
CustomerNationalityCode Post
Retry
Cancel
The nationality code of the customer initiating the transaction ZA PK BD Etc. Yes
SenderAddressCity Post
Retry
Cancel
The city where the customer initiating the transaction resides Johannesburg London Yes
SenderAddressStreet Post
Retry
Cancel
The street where the customer initiating the transaction resides 69 Baker Street, 124 Pluto Road, Yes
SenderAddressZIP Post
Retry
Cancel
The zip code where the customer initiating the transaction resides NW1 3AU Yes
SenderCountry Post
Retry
Cancel
The ISO 3 country code of the customer initiating the transaction ZAF GBR Yes
SenderCountryCode Post
Retry
Cancel
The ISO 2 country code of the customer initiating the transaction ZA PK BD Etc. Yes
SenderCurrency Post
Retry
Cancel
Check Status
The Currency code of the sender ZAR BBP Yes
SenderId Post
Retry
Cancel
The Identification number of the customer 7901014908082 A123 HB587 Yes
SenderNationalityCountryISOCode Post
Retry
Cancel
The ISO 3 code of the customers nationality ZAF GBR Yes
SenderProvinceState Post
Retry
Cancel
The State/Province of the customer initiating the transaction OxfordShire Cape Town Yes
StreetNo Post
Retry
Cancel
The Street Number of the customer initiating the transaction 69 Yes
Suburb Post
Retry
Cancel
The Suburb of the customer initiating the transaction London Johannesburg Yes