Text Link
Bank Account Inquiry
Text Link
Create Disbursement
Text Link
Get Disbursement Status
Text Link
Disbursement Callback
Text Link
Disbursement Bank Codes
Text Link
Mock Data in Demo Environment
Text Link
Get Balance

Bank Account Inquiry

Bank Account Inquiry is an API that allows you to verify the destination bank account information before initiating a disbursement transfer.

Environment Method URL
Production POST https://partner.motra.id/snap/v1.0/emoney/bank-account-inquiry
Demo POST https://api-demo.motra.id/snap/v1.0/emoney/bank-account-inquiry

Header Parameters

Header Data Type Length Required Description
Content-Type String - Mandatory Content type, value always application/json
Authorization String 2048 Mandatory Access token obtained from the Get Access Token API
Value: Bearer {{accessToken}}
X-TIMESTAMP YYYY-MM-DDTHH:mm:ss+07:00 25 Mandatory Request timestamp in ISO 8601 format.
X-SIGNATURE String 256 Mandatory Symmetric signature generated using HMAC-SHA512.
X-PARTNER-ID String 36 Mandatory Unique identifier generated by Motra for the partner. Equal to Client Key.
X-EXTERNAL-ID Alphanumeric 36 Mandatory Unique reference identifier generated by partner and should be unique within the same day.
CHANNEL-ID String 5 Mandatory Channel ID, value always: MTAPI

Request Body

Field Type Length Required Description
partnerReferenceNo string 32 Mandatory Unique transaction identifier on the partner system for each request.
customerNumber string 36 Mandatory Unique identifier of the partner. Must match the partner's Client ID.
amount object - Mandatory Amount object
amount.value string 16,2 Mandatory Transaction amount, with format .00
amount.currency string 3 Mandatory Currency. Use IDR
beneficiaryAccountNumber string 32 Mandatory Beneficiary bank account number, numeric only.
additionalInfo object - Mandatory Additional information
additionalInfo.beneficiaryBankCode string 11 Mandatory Beneficiary bank code. Please refer to Disbursement Bank Codes .
additionalInfo.deviceId string 32 Optional Unique identifier of the end-user's device.
additionalInfo.channel string 255 Optional The origin channel or interface (web, mobile, or API).

Response Body

Field Type Length Description
responseCode string 7 Response code (refer to response code list)
responseMessage string 150 Response message (refer to response code list)
referenceNo string 36 Unique disbursement identifier from Motra.
partnerReferenceNo string 32 Unique disbursement identifier from Partner.
beneficiaryAccountNumber string 32 Beneficiary bank account number.
beneficiaryAccountName string 64 Beneficiary bank account name.
beneficiaryBankCode string 11 Beneficiary bank code.
beneficiaryBankName string 25 Beneficiary bank name.
amount object - Amount object
amount.value string 16,2 Transaction amount
amount.currency string 3 Currency
additionalInfo object - Additional information
additionalInfo.beneficiaryBankCode string 11 Beneficiary bank code.
additionalInfo.deviceId string 32 Device ID
additionalInfo.channel string 255 Channel

Response Codes List

Service Code : 42
Response Code Response Message Description
2004200 Successful Inquiry request successfully processed.
4004201 Invalid Field Format {field name} Invalid field format.
4004202 Invalid Mandatory Field {field name} Missing mandatory field.
4014200 Unauthorized. [reason] General unauthorized error.
4014201 Invalid Token (B2B) Token found in request is invalid (Access Token Not Exist or Access Token Expiry).
4014203 Token Not Found (B2B) Token not found in the system. This occurs on any API that requires a token as input parameter.
4034201 Feature Not Allowed. [reason] The partner is not allowed to call the Account Inquiry API.
4034206 Feature Not Allowed At This Time. [reason] Feature Not Allowed At This Time.
4034215 Transaction Not Permitted. [reason] Transaction Not Permitted.
4044203 Bank Not Supported By Switch Beneficiary Bank Code is Not Supported
4044211 Invalid Card/Account/Customer [info]/Virtual Account Bank account not found.
4054200 Requested Function Is Not Supported Request is sent using an unsupported HTTP Method (e.g., DELETE instead of POST)
4094200 Conflict Cannot use the same X-EXTERNAL-ID on the same day.
4094201 Duplicate partnerReferenceNo Duplicate partnerReferenceNo
4294200 Too Many Requests Maximum transaction limit exceeded.
5004201 Internal Server Error Unknown Internal Server Failure, Please retry the process again.
5044200 Timeout Timeout

‍

{
    "partnerReferenceNo": "partner_ref_7181897399",
    "customerNumber": "cust-123",
    "amount": {
        "value": "10000.00",
        "currency": "IDR"
    },
    "beneficiaryAccountNumber": "1234567890",
    "additionalInfo": {
        "beneficiaryBankCode": "002",
        "deviceId": "device-123",
        "channel": "mobile"
    }
}

‍

curl --request POST \
  --url 'https://partner.motra.id/snap/v1.0/emoney/bank-account-inquiry' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4MzE0ZDRkMCIsImlhdCI6MTc4NzIyMzEwNSwic3ViIjoiNWFiOGFmNzM5NDA5NzYwMmQxM2FiOGJmMjczZTdkNTE3YjQyNTRhYmNkYTFhMmY2MWM0ZWIxNWY2ZWM5NWY2NSIsImlzcyI6ImNlcml0YW95b24iLCJleHAiOjE3ODcyMjQwMDV9.yNLyfo8x9NPfabpiMjLtNlEqyfnGgteu6X58Hg1T15s' \
  --header 'X-TIMESTAMP: 2026-10-11T12:51:45+07:00' \
  --header 'X-SIGNATURE: GOMDlSYXPUwZoKRkmiaZ1H5NWxJ4nlvX7dfqhGykm+IVt0Ja3xPW41GvpgEbN8RJUNtxUc08+Pca7HnXNqDQUQ==' \
  --header 'X-PARTNER-ID: d7c03ddb-ce99-41e5-90b2-0a3e36291ddb' \
  --header 'X-EXTERNAL-ID: 095520064394252310725507438648773926' \
  --header 'CHANNEL-ID: MTAPI' \
  --data '{
    "partnerReferenceNo": "partner_ref_7181897399",
    "customerNumber": "d7c03ddb-ce99-41e5-90b2-0a3e36291ddb",
    "amount": {
        "value": "10000.00",
        "currency": "IDR"
    },
    "beneficiaryAccountNumber": "1234567899",
    "additionalInfo": {
        "beneficiaryBankCode": "002",
        "deviceId": "device-123",
        "channel": "mobile"
    }
}'

‍

Request Samples
2004200
{
    "responseCode": "2004200",
    "responseMessage": "Successful",
    "referenceNo": "8f415a7f-0a8c-4351-b8e4-d4279267950f",
    "partnerReferenceNo": "partner_ref_7181897399",
    "beneficiaryAccountName": "Malcom Waters",
    "beneficiaryAccountNumber": "1234567890",
    "beneficiaryBankCode": "002",
    "beneficiaryBankName": "BRI",
    "amount": {
        "value": "10000.00",
        "currency": "IDR"
    },
    "additionalInfo": {
        "beneficiaryBankCode": "002",
        "deviceId": "device-123",
        "channel": "mobile"
    }
}

‍

4094200
{
  "responseCode": "4094200",
  "responseMessage": "Conflict"
}

‍

4004202
{
    "responseCode": "4004202",
    "responseMessage": "Invalid Mandatory Field partnerReferenceNo"
}

‍

Response Samples

Create Disbursement

Create Disbursement is an API to transfer funds to the destination bank account via disbursement service.

Environment Method URL
Production POST https://partner.motra.id/snap/v1.0/emoney/transfer-bank
Demo POST https://api-demo.motra.id/snap/v1.0/emoney/transfer-bank

Header Parameters

Header Data Type Length Required Description
Content-Type String - Mandatory Content type, value always application/json
Authorization String 2048 Mandatory Access token obtained from the Get Access Token API
Value: Bearer {{accessToken}}
X-TIMESTAMP YYYY-MM-DDTHH:mm:ss+07:00 25 Mandatory Request timestamp in ISO 8601 format.
X-SIGNATURE String 256 Mandatory Symmetric signature generated using HMAC-SHA512.
X-PARTNER-ID String 36 Mandatory Unique identifier generated by Motra for the partner. Equal to Client Key.
X-EXTERNAL-ID Alphanumeric 36 Mandatory Unique reference identifier generated by partner and should be unique within the same day.
CHANNEL-ID String 5 Mandatory Channel ID, value always: MTAPI

Request Body

Field Type Length Required Description
partnerReferenceNo string 32 Mandatory Unique transaction identifier on the partner system for each request.
customerNumber string 36 Mandatory Unique identifier of the partner. Must match the partner's Client ID.
amount object - Mandatory Amount object
amount.value string 16,2 Mandatory Transaction amount, with format .00
amount.currency string 3 Mandatory Currency. Use IDR
beneficiaryAccountNumber string 32 Mandatory Beneficiary bank account number, numeric only.
beneficiaryBankCode string 11 Mandatory Beneficiary bank code. Please refer to Disbursement Bank Codes .
additionalInfo object - Conditional Additional information.
This object is mandatory for aggregator partners that manage multiple merchants under a single account.
additionalInfo.deviceId string 32 Optional Unique identifier of the end-user's device.
additionalInfo.channel string 255 Optional The origin channel or interface (web, mobile, or API).
additionalInfo.beneficiaryEmail string 255 Optional Email address(es) to receive the transaction success receipt. Max 5 email, separated by spaces.
additionalInfo.customerReference string 30 Optional Transaction remark that may appear on the beneficiary's account statement, depending on bank capabilities. Supports alphanumeric characters and common symbols (e.g. -, *, . )
additionalInfo.partnerMerchantId string 64 Optional Unique ID for each partner's merchant.
additionalInfo.originatorInfos object - Conditional Object related to originator information.
This object is mandatory for aggregator partners that manage multiple merchants under a single account.
additionalInfo.originatorInfos.
originatorCustomerNo
string 32 Conditional Originator's bank account number
additionalInfo.originatorInfos.
originatorCustomerName
string 100 Conditional Name of the originator's
additionalInfo.originatorInfos.
originatorBankCode
string 11 Conditional Bank code of the originator's account. Please refer to Disbursement Bank Codes .

Response Body

Field Type Length Description
responseCode string 7 Response code (refer to response code list)
responseMessage string 150 Response message (refer to response code list)
referenceNo string 36 Unique disbursement identifier from Motra.
partnerReferenceNo string 32 Unique disbursement identifier from Partner.
referenceNumber string 36 Reference number
additionalInfo object - Additional information
additionalInfo.deviceId string 32 Device ID
additionalInfo.channel string 255 Channel

Response Code List

Service Code : 43
Response Code Response Message Description
2004300 Successful Transaction request successfully processed.
4004301 Invalid Field Format {field name} Invalid field format.
4004302 Invalid Mandatory Field {field name} Missing mandatory field
4014300 Unauthorized. [reason] General unauthorized error.
4014301 Invalid Token (B2B) Token found in request is invalid (Access Token Not Exist or Access Token Expiry).
4014303 Token Not Found (B2B) Token not found in the system. This occurs on any API that requires a token as input parameter.
4034301 Feature Not Allowed. [reason] The partner is not allowed to call the Create Disbursement API.
4034302 Exceeds Transaction Amount Limit The requested amount is greater than the amount that is allowed.
4034303 Suspected Fraud Suspected Fraud.
4034306 Feature Not Allowed At This Time. [reason] Feature Not Allowed At This Time.
4044303 Bank Not Supported By Switch Beneficiary Bank Code is Not Supported
4034315 Transaction Not Permitted. [reason] Transaction Not Permitted.
4044311 Invalid Card/Account/Customer [info]/Virtual Account Bank account not found.
4054300 Requested Function Is Not Supported Request is sent using an unsupported HTTP Method (e.g., DELETE instead of POST)
4094300 Conflict Cannot use the same X-EXTERNAL-ID on the same day.
4094301 Duplicate partnerReferenceNo Duplicate partnerReferenceNo
4294300 Too Many Requests Maximum transaction limit exceeded.
5004301 Internal Server Error Unknown Internal Server Failure, Please retry the process again.
5044300 Timeout Timeout
{
    "partnerReferenceNo": "partner_ref_2746102211",
    "customerNumber": "d7c03ddb-ce99-41e5-90b2-0a3e36291ddb",
    "amount": {
      "value": "10000.00",
      "currency": "IDR"
    },
    "beneficiaryAccountNumber": "123456789",
    "beneficiaryBankCode": "008",
    "additionalInfo": {
        "deviceId": "3306021027",
        "channel": "mobile",
        "beneficiaryEmail": "john.doe1@mail.com john.doe2@mail.com",
        "customerReference": "SNAP Transaction",
        "originatorInfos": {
            "originatorCustomerNo": "12341234",
            "originatorCustomerName": "John Doe",
            "originatorBankCode": "008"
        }
    }
}
curl --request POST \
  --url 'https://partner.motra.id/snap/v1.0/emoney/transfer-bank' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlNjdjMTI0NiIsImlhdCI6MTc4NzQ4OTI4Mywic3ViIjoiYzlmNzc2MjJjMDllN2VjZmRiNDc0NDI3OWRlNGE5N2YwM2VhNjM3YTAwN2M0MWY1M2ZlZDQwYzNlZmJmMDI2NyIsImlzcyI6ImNlcml0YW95b24iLCJleHAiOjE3ODc0OTAxODN9.7VMRcqW1kzGgd2vBpvgNrHNw3bJLHr1XKUT9MFZ6TGo' \
  --header 'X-TIMESTAMP: 2026-10-11T12:28:03+07:00' \
  --header 'X-SIGNATURE: Q9d1y9z5mihChalNLYalz2IAXuRlhBQcPdWWmYvZfF8ZZDmq9amEaoRR/+H3F7IGkIhZGeP7OR2WBZXhAihByA==' \
  --header 'X-PARTNER-ID: d7c03ddb-ce99-41e5-90b2-0a3e36291ddb' \
  --header 'X-EXTERNAL-ID: 403233833804061475166310412252282166' \
  --header 'CHANNEL-ID: MTAPI' \
  --data '{
    "partnerReferenceNo": "partner_ref_2746102211",
    "customerNumber": "d7c03ddb-ce99-41e5-90b2-0a3e36291ddb",
    "amount": {
      "value": "10000.00",
      "currency": "IDR"
    },
    "beneficiaryAccountNumber": "123456789",
    "beneficiaryBankCode": "008",
    "additionalInfo": {
      "deviceId": "3306021027",
      "channel": "mobile",
      "beneficiaryEmail": "john.doe1@mail.com john.doe2@mail.com",
      "customerReference": "SNAP Transaction",
      "originatorInfos": {
        "originatorCustomerNo": "12343211",
        "originatorCustomerName": "John Doe",
        "originatorBankCode": "008"
      }
    }
  }'
Request Samples
2004300
{
    "responseCode": "2004300",
    "responseMessage": "Successful",
    "referenceNo": "e1b2638c-9ef0-11f1-bf1b-e944b4b404f8",
    "partnerReferenceNo": "partner_ref_2746903221",
    "referenceNumber": "e1b2638c-9ef0-11f1-bf1b-e944b4b404f8",
    "additionalInfo": {
        "deviceId": "3306021027",
        "channel": "mobile"
    }
}
4044311
{
  "responseCode": "4044311",
  "responseMessage": "Invalid Card/Account/Customer [info]/Virtual Account"
}
4094300
{
  "responseCode": "4094300",
  "responseMessage": "Conflict"
}
4004302
{
  "responseCode": "4004302",
  "responseMessage": "Invalid Mandatory Field beneficiaryAccountNumber"
}
Response Samples

Get Disbursement Status

Disbursement Check Status is an API to get transfer transaction status. You may need to call this API few times until getting a final status (success/failed). We suggest to check the status 60 seconds after the disbursement requested.

Environment Method URL
Production POST https://partner.motra.id/snap/v1.0/transfer/status
Demo POST https://api-demo.motra.id/snap/v1.0/transfer/status

Header Parameters

Header Data Type Length Required Description
Content-Type String - Mandatory Content type, value always application/json
Authorization String 2048 Mandatory Access token obtained from the Get Access Token API
Value: Bearer {{accessToken}}
X-TIMESTAMP YYYY-MM-DDTHH:mm:ss+07:00 25 Mandatory Request timestamp in ISO 8601 format.
X-SIGNATURE String 256 Mandatory Symmetric signature generated using HMAC-SHA512.
X-PARTNER-ID String 36 Mandatory Unique identifier generated by Motra for the partner. Equal to Client Key.
X-EXTERNAL-ID Alphanumeric 36 Mandatory Unique reference identifier generated by partner and should be unique within the same day.
CHANNEL-ID String 5 Mandatory Channel ID, value always: MTAPI

Request Body

Field Type Length Required Description
originalPartnerReferenceNo string 32 Mandatory Unique transaction identifier on the partner system for each request.
serviceCode string 2 Mandatory Transaction type indicator of the disbursement transaction that needs to be checked (original transaction). Use 43
additionalInfo object - Optional Additional information
additionalInfo.sendCallback boolean - Optional A flag to indicate if the status of the disbursement request needs to be re-sent as a callback or not. Value: true or false

Response Body

Field Type Length Description
responseCode string 7 Response code (refer to response code list)
responseMessage string 150 Response message (refer to response code list)
originalReferenceNo string 36 Original unique disbursement identifier from Motra.
originalPartnerReferenceNo string 32 Original unique disbursement identifier from Partner.
originalExternalId string 36 External-ID from the given originalPartnerReferenceNo.
serviceCode string 2 Service code of the Create Disbursement API.
transactionDate string 25 Request timestamp in ISO 8601 format (YYYY-MM-DDTHH:mm:ss+07:00)
amount object - Amount object
amount.value string 16,2 Transaction amount
amount.currency string 3 Currency
beneficiaryAccountNo string 32 Beneficiary bank account number.
beneficiaryBankCode string 11 Beneficiary bank code.
currency string 3 Currency
referenceNumber string 36 Reference number
sourceAccountNo string 19 Source account
latestTransactionStatus string 2 Latest transaction status code
transactionStatusDesc string 50 Transaction status description
additionalInfo object - Additional information
additionalInfo.receiptUrl string 255 URL to download the transaction success receipt.
additionalInfo.failedReason string 255 Details explaining why the transaction failed.

Status Code Mapping

latestTransactionStatus transactionStatusDesc Description
00 Success Transaction has been successfully completed, and the funds have been credited to the beneficiary's account.
01 Initiated Transaction has been initiated and is waiting to be processed.
02 Paying Transaction is currently being processed.
03 Pending Transaction status is still awaiting confirmation from the bank.
06 Failed Transaction has failed.

Response Code List

Service Code : 36
Response Code Response Message Description
2003600 Successful Check status request successfully processed.
4003600 Bad Request General request failed error, including message parsing failed.
4003601 Invalid Field Format {field name} Invalid field format.
4003602 Invalid Mandatory Field {field name} Missing mandatory field
4013600 Unauthorized. [reason] General unauthorized error.
4013601 Invalid Token (B2B) Token found in request is invalid (Access Token Not Exist or Access Token Expiry).
4013603 Token Not Found (B2B) Token not found in the system. This occurs on any API that requires a token as input parameter.
4033601 Feature Not Allowed. [reason] The partner is not allowed to call the Check Status API.
4043601 Transaction Not Found Transaction not found on Motra system.
4053600 Requested Function Is Not Supported Request is sent using an unsupported HTTP Method (e.g., DELETE instead of POST)
4093600 Conflict Cannot use the same X-EXTERNAL-ID on the same day.
4293600 Too Many Requests Maximum transaction limit exceeded.
5003601 Internal Server Error Unknown Internal Server Failure, Please retry the process again.
5043600 Timeout Timeout
{
  "originalPartnerReferenceNo": "TRX-20260629-002",
  "serviceCode": "43",
  "additionalInfo": {
    "sendCallback": true
  }
}
curl --request POST \
  --url 'https://partner.motra.id/snap/v1.0/transfer/status' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2OGViOTZjZCIsImlhdCI6MTc4NzQ4OTA1MCwic3ViIjoiYzlmNzc2MjJjMDllN2VjZmRiNDc0NDI3OWRlNGE5N2YwM2VhNjM3YTAwN2M0MWY1M2ZlZDQwYzNlZmJmMDI2NyIsImlzcyI6ImNlcml0YW95b24iLCJleHAiOjE3ODc0ODk5NTB9.in1HDk_iN3A_wjKT9mRKV7pzjqrvNemhdjv5JsPJ7sM' \
  --header 'X-TIMESTAMP: 2026-10-11T12:44:10+07:00' \
  --header 'X-SIGNATURE: vlW8sGcs6WrI+nSPE/p1EOVgSdG1d2IvQQDHQL35MCKT3FB77XKo4dG4d059EPh5kdXSmGiRyJ2aRJkgqDYP8Q==' \
  --header 'X-PARTNER-ID: d7c03ddb-ce99-41e5-90b2-0a3e36291ddb' \
  --header 'X-EXTERNAL-ID: 175721826805344434795918982984024840' \
  --header 'CHANNEL-ID: MTAPI' \
  --data '{
    "originalPartnerReferenceNo": "TRX-20261011-001",
    "serviceCode": "43",
    "additionalInfo": {
      "sendCallback": true
    }
}'

‍

Request Samples
2003600 (Success)
{
  "responseCode": "2003600",
  "responseMessage": "Successful",
  "originalReferenceNo": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
  "originalPartnerReferenceNo": "TRX-20260629-002",
  "originalExternalId": "175721826805344434795918982984024840",
  "serviceCode": "43",
  "transactionDate": "2026-06-29T14:39:45+07:00",
  "amount": {
    "value": "10000.00",
    "currency": "IDR"
  },
  "beneficiaryAccountNo": "123412345",
  "beneficiaryBankCode": "008",
  "currency": "IDR",
  "referenceNumber": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
  "sourceAccountNo": "MOTRA",
  "latestTransactionStatus": "00",
  "transactionStatusDesc": "Success",
  "additionalInfo": {
    "receiptUrl": "https://api.motra.id/api/receipt?partner_trx_id=TRX-20260629-002&trx_id=b2c5dab8-738d-11f1-acfb-9573cbed5e31"
  }
}
2003600 (Failed)
{
    "responseCode": "2003600",
    "responseMessage": "Successful",
    "originalReferenceNo": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
    "originalPartnerReferenceNo": "TRX-20260629-002",
    "originalExternalId": "175721826805344434795918982984024840",
    "serviceCode": "43",
    "transactionDate": "2026-06-29T14:39:45+07:00",
    "amount": {
        "value": "10000.00",
        "currency": "IDR"
    },
    "beneficiaryAccountNo": "123412345",
    "beneficiaryBankCode": "008",
    "currency": "IDR",
    "referenceNumber": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
    "sourceAccountNo": "MOTRA",
    "latestTransactionStatus": "06",
    "transactionStatusDesc": "Failed",
    "additionalInfo": {
        "failedReason": "Not enough balance to disburse the money, please top up your balance."
    }
}
4003602
{
    "responseCode": "4003602",
    "responseMessage": "Invalid Mandatory Field originalPartnerReferenceNo"
}

‍

4093600
{
  "responseCode": "4093600",
  "responseMessage": "Conflict"
}

‍

Response Samples

Disbursement Callback

Once a disbursement request is completed, our system will send a status callback to your system.

You can configure your Callback URL in the Business Dashboard:

  1. Open the Settings tab.
  2. Select Developer Options.
  3. Select Callback Configuration.
  4. Enter your Callback URL in the API Disbursement field.

Callback Parameters

Field Type Length Description
originalReferenceNo string 36 Original unique disbursement identifier from Motra.
originalPartnerReferenceNo string 32 Original unique disbursement identifier from Partner.
originalExternalId string 36 External-ID from the given originalPartnerReferenceNo.
serviceCode string 2 Service code of the create disbursement API.
transactionDate string 25 Request timestamp in ISO 8601 format (YYYY-MM-DDTHH:mm:ss+07:00)
amount object - Amount object
amount.value string 16,2 Transaction amount
amount.currency string 3 Currency
beneficiaryAccountNo string 32 Beneficiary bank account number.
beneficiaryBankCode string 11 Beneficiary bank code.
currency string 3 Currency
referenceNumber string 36 Reference number
sourceAccountNo string 19 Source account
latestTransactionStatus string 2 Latest transaction status code
transactionStatusDesc string 50 Transaction status description
additionalInfo object - Additional information
additionalInfo.receiptUrl string 255 URL to download the transaction success receipt.
additionalInfo.failedReason string 255 Details explaining why the transaction failed.

Status Code Mapping

latestTransactionStatus transactionStatusDesc Description
00 Success Transaction has been successfully completed, and the funds have been credited to the beneficiary's account.
01 Initiated Transaction has been initiated and is waiting to be processed.
02 Paying Transaction is currently being processed.
03 Pending Transaction status is still awaiting confirmation from the bank.
06 Failed Transaction has failed.

‍

‍

Request Samples
Callback Success
{
  "originalReferenceNo": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
  "originalPartnerReferenceNo": "TRX-20260629-002",
  "originalExternalId": "175721826805344434795918982984024840",
  "serviceCode": "43",
  "transactionDate": "2026-06-29T14:39:45+07:00",
  "amount": {
    "value": "10000.00",
    "currency": "IDR"
  },
  "beneficiaryAccountNo": "123412345",
  "beneficiaryBankCode": "008",
  "currency": "IDR",
  "referenceNumber": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
  "sourceAccountNo": "MOTRA",
  "latestTransactionStatus": "00",
  "transactionStatusDesc": "Success",
  "additionalInfo": {
    "receiptUrl": "https://api.motra.id/api/receipt?partner_trx_id=TRX-20260629-002&trx_id=b2c5dab8-738d-11f1-acfb-9573cbed5e31"
  }
}
Callback Failed
{
  "originalReferenceNo": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
  "originalPartnerReferenceNo": "TRX-20260629-002",
  "originalExternalId": "175721826805344434795918982984024840",
  "serviceCode": "43",
  "transactionDate": "2026-06-29T14:39:45+07:00",
  "amount": {
    "value": "10000.00",
    "currency": "IDR"
  },
  "beneficiaryAccountNo": "123412345",
  "beneficiaryBankCode": "008",
  "currency": "IDR",
  "referenceNumber": "b2c5dab8-738d-11f1-acfb-9573cbed5e31",
  "sourceAccountNo": "MOTRA",
  "latestTransactionStatus": "06",
  "transactionStatusDesc": "Failed",
  "additionalInfo": {
    "failedReason": "Not enough balance to disburse the money, please top up your balance."
  }
}
Response Samples

Disbursement Bank Codes

Supported Bank Codes to be used in the Disbursement Request:

Bank Code Bank Name
Transaction Limit
002 BRI Rp250,000,000
008 Bank Mandiri Rp250,000,000
009 Bank Negara Indonesia Rp250,000,000
011 Bank Danamon Rp250,000000
013 Bank Permata Rp250,000,000
014 BCA Rp250,000,000
016 BII Maybank Rp250,000,000
019 Bank Panin Rp250,000,000
022 CIMB Niaga Rp250,000,000
023 Bank UOB Indonesia Rp250,000,000
028 Bank OCBC NISP Rp250,000,000
031 Citibank Rp50,000,000
032 JPMorgan Chase Bank Rp250,000,000
036 Bank China Construction Bank Indonesia Rp50,000,000
037 Bank Artha Graha Internasional Rp250,000,000
042 MUFG Bank Rp250,000,000
046 Bank DBS Indonesia Rp250,000,000
050 Standard Chartered Rp250,000,000
054 Bank Capital Indonesia Rp250,000,000
061 ANZ Indonesia Rp250,000,000
067 Deutsche Bank AG Rp50,000,000
069 Bank OF China Rp250,000,000
076 Bank Bumi Arta Rp250,000,000
087 Bank HSBC Indonesia Rp250,000,000
088 Bank Antardaerah Rp50,000,000
089 Bank Rabobank Rp50,000,000
095 Bank Jtrust Indonesia Rp250,000,000
097 Bank Mayapada International Rp250,000,000
110 BJB Rp250,000,000
111 Bank DKI Rp250,000,000
112 Bank DIY Rp250,000,000
112S Bank DIY Syariah Rp250,000,000
113 Bank Jateng Rp250,000,000
114 Bank Jatim Rp250,000,000
114S Bank Jatim Syariah Rp250,000,000
115 Bank Jambi Rp250,000,000
115S Bank Jambi Syariah Rp250,000,000
116 Bank Aceh Rp250,000,000
117 Bank Sumut Rp250,000,000
117S Bank Sumut Syariah Rp250,000,000
118 Bank Nagari Rp250,000,000
118S Bank Nagari Syariah Rp250,000,000
119 Bank Riau Rp250,000,000
120 Bank Sumsel Babel Rp250,000,000
120S Bank Sumsel Babel Syariah Rp250,000,000
121 Bank Lampung Rp250,000,000
122 Bank Kalsel Rp250,000,000
122S Bank Kalsel Syariah Rp250,000,000
123 Bank Kalbar Rp250,000,000
123S Bank Kalbar Syariah Rp250,000,000
124 Bank Kaltim Rp250,000,000
124S Bank Kaltim Syariah Rp250,000,000
125 Bank Kalteng Rp250,000,000
126 Bank Sulselbar Rp250,000,000
126S Bank Sulselbar Syariah Rp250,000,000
127 Bank Sulut Rp250,000,000
128 Bank NTB Rp250,000,000
129 Bank Bali Rp250,000,000
130 Bank NTT Rp250,000,000
131 Bank Maluku Rp250,000,000
132 Bank Papua Rp250,000,000
133 Bank Bengkulu Rp250,000,000
134 Bank Sulteng Rp250,000,000
135 Bank Sultra Rp250,000,000
137 Bank Banten Rp250,000,000
145 Bank Nusantara Parahyangan Rp50,000,000
146 Bank Of India Indonesia Rp50,000,000
147 Bank Muamalat Rp250,000,000
151 Bank Mestika Rp250,000,000
152 Bank Shinhan Rp250,000,000
153 Bank Sinarmas Rp250,000,000
157 Bank Maspion Indonesia Rp250,000,000
161 Bank Ganesha Rp250,000,000
164 Bank ICBC Indonesia Rp250,000,000
167 Bank QNB Indonesia Rp250,000,000
200 BTN Rp250,000,000
200S BTN Syariah Rp250,000,000
212 Bank Woori Saudara Rp250,000,000
213 Bank SMBC Indonesia Rp250,000,000
405 Bank Victoria Syariah Rp250,000,000
425 BJB Syariah Rp250,000,000
426 Bank Mega Rp250,000,000
441 Bank Bukopin Rp250,000,000
451 Bank Syariah Indonesia Rp250,000,000
459 Krom Bank Indonesia Rp250,000,000
472 Bank Jasa Jakarta Rp250,000,000
484 Bank KEB Hana Rp250,000,000
485 Bank MNC Rp250,000,000
490 Bank Neo Commerce Rp250,000,000
494 Bank Raya Indonesia Rp250,000,000
498 Bank SBI Indonesia Rp250,000,000
501 BCA Digital Rp250,000,000
503 Bank National Nobu Rp250,000,000
506 Bank Mega Syariah Rp250,000,000
513 Bank INA Rp250,000,000
517 Bank Panin Syariah Rp250,000,000
520 Bank Prima Rp250,000,000
521 Bank Syariah Bukopin Rp250,000,000
523 Bank Sahabat Sampoerna Rp250,000,000
526 Bank Oke Indonesia Rp250,000,000
535 Bank Seabank Indonesia Rp250,000,000
536 Bank BCA Syariah Rp250,000,000
542 Bank Jago Rp250,000,000
542S Bank Jago Syariah Rp250,000,000
547 Bank BTPN Syariah Rp250,000,000
548 Bank Multiarta Sentosa Rp250,000,000
553 Bank Hibank Indonesia Rp250,000,000
555 Bank Index Rp250,000,000
559 Bank CNB Rp50,000,000
562 Superbank Rp250,000,000
564 Bank Mandiri Taspen Rp250,000,000
566 Bank Victoria International Rp250,000,000
567 Allo Bank Rp250,000,000
600 ATMB LSB Rp250,000,000
688 BPR KS Rp250,000,000
724 Bank DKI Syariah Rp250,000,000
725 Bank Jateng Syariah Rp250,000,000
734 Bank Sinarmas Syariah Rp250,000,000
777 Finnet Rp50,000,000
867 Bank Eka Rp250,000,000
945 Bank IBK Indonesia Rp50,000,000
947 Bank Aladin Syariah Rp250,000,000
949 Bank CTBC Indonesia Rp250,000,000
950 Bank Commonwealth Rp50,000,000
987 ATMB Plus Rp250,000,000
dana DANA Rp20,000,000
gopay GoPay Rp20,000,000
linkaja LinkAja Rp10,000,000
ovo OVO Rp20,000,000
shopeepay Shopeepay Rp20,000,000
Request Samples
Response Samples

Mock Data in Demo Environment

The Demo Environment is provided for integration and testing purposes. Transactions performed in this environment do not result in actual fund transfers.

Mock Data

To facilitate integration and testing, the Disbursement API provides mock data in the Demo Environment based on the beneficiaryAccountNumber provided in the request. This allows you to simulate various transaction outcomes without executing real transactions.

The beneficiaryAccountNumber parameter is available in the Bank Account Inquiry and Create Disbursement APIs.

‍

Bank Account Inquiry

beneficiaryAccountNumber Test Scenario
404421100 Account Inquiry Failed — Bank Account Not Found
429420000 Too Many Requests
500420100 Internal Server Error
504420000 Timeout
200420000 or any other value Account Inquiry Success

Create Disbursement

beneficiaryAccountNumber Test Scenario
200430002 In Progress Transaction
200430003 Pending Transaction
200430006 Failed Transaction
404431100 Wrong Beneficiary Account Number — Bank Account Not Found
429430000 Too Many Requests
403430300 Suspected Fraud
500430100 Internal Server Error
504430000 Timeout
200430000 or any other value Successful Transaction

‍

‍

Request Samples
Response Samples

Get Balance

Use this API to get partner balance in Motra system.

Environment Method URL
Production POST https://partner.motra.id/snap/v1.0/balance-inquiry
Demo POST https://api-demo.motra.id/snap/v1.0/balance-inquiry

Header Parameters

Header Data Type Length Required Description
Content-Type String - Mandatory Content type, value always application/json
Authorization String 2048 Mandatory Access token obtained from the Get Access Token API
Value: Bearer {{accessToken}}
X-TIMESTAMP YYYY-MM-DDTHH:mm:ss+07:00 25 Mandatory Request timestamp in ISO 8601 format.
X-SIGNATURE String 256 Mandatory Symmetric signature generated using HMAC-SHA512.
X-PARTNER-ID String 36 Mandatory Unique identifier generated by Motra for the partner. Equal to Client Key.
X-EXTERNAL-ID Alphanumeric 36 Mandatory Unique reference identifier generated by partner and should be unique within the same day.
CHANNEL-ID String 5 Mandatory Channel ID, value always: MTAPI

Request Body

Field Type Length Required Description
partnerReferenceNo string 32 Optional Unique transaction identifier on the partner system for each request.
balanceTypes Array of String - Optional Balance type to be inquired. Use DEPOSIT.
additionalInfo object - Optional Additional information
additionalInfo.deviceId string 32 Optional Unique identifier of the end-user's device.
additionalInfo.channel string 255 Optional The origin channel or interface (web, mobile, or API).

Response Body

Field Type Length Description
responseCode string 7 Response code (refer to response code list)
responseMessage string 150 Response message (refer to response code list)
name string 140 Partner’s Brand Name in Motra system.
accountInfos object - List of account balance information.
balanceType string 19 Balance type to be inquired. Use DEPOSIT.
availableBalance object - Available Balance object.
availableBalance.value string 16.2 Available Balance. Balance that can be used for transaction
availableBalance.currency string 3 Currency.
balance object - Balance object. Total of Balance in Motra system.
balance.value string 16.2 Balance.
balance.currency string 3 Currency.
pendingBalance object - Pending Balance object.
pendingBalance.value string 16.2 Pending Balance.
pendingBalance.currency string 3 Currency.
frozenBalance object - Frozen Balance object.
frozenBalance.value string 16.2 Frozen Balance.
frozenBalance.currency string 3 Currency.

Response Codes List

Service Code : 11
Response Code Response Message Description
2001100 Successful Get Balance request successfully processed.
4001100 Bad Request General request failed error, including message parsing failed.
4001101 Invalid Field Format {field name} Invalid field format.
4001102 Invalid Mandatory Field {field name} Missing mandatory field.
4011100 Unauthorized. [reason] General unauthorized error.
4011101 Invalid Token (B2B) Token found in request is invalid (Access Token Not Exist or Access Token Expiry).
4011103 Token Not Found (B2B) Token not found in the system. This occurs on any API that requires a token as input parameter.
4031101 Feature Not Allowed. [reason] The partner is not allowed to call the Get Balance API.
4051100 Requested Function Is Not Supported Request is sent using an unsupported HTTP Method (e.g., DELETE instead of POST)
4091100 Conflict Cannot use the same X-EXTERNAL-ID on the same day.
4291100 Too Many Requests Maximum transaction limit exceeded.
5001101 Internal Server Error Unknown Internal Server Failure, Please retry the process again.
5041100 Timeout Timeout

‍

{
  "partnerReferenceNo": "d3s34sa873ca",
  "balanceTypes": [
    "DEPOSIT"
  ],
  "additionalInfo": {
    "deviceId": "deviceId",
    "channel": "API"
  }
}

‍

curl --location 'https://partner.motra.id/snap/v1.0/balance-inquiry' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2OGViOTZjZCIsImlhdCI6MTc4NzQ4OTA1MCwic3ViIjoiYzlmNzc2MjJjMDllN2VjZmRiNDc0NDI3OWRlNGE5N2YwM2VhNjM3YTAwN2M0MWY1M2ZlZDQwYzNlZmJmMDI2NyIsImlzcyI6ImNlcml0YW95b24iLCJleHAiOjE3ODc0ODk5NTB9.in1HDk_iN3A_wjKT9mRKV7pzjqrvNemhdjv5JsPJ7sM' \
--header 'X-TIMESTAMP: 2026-09-11T15:04:32+07:00' \
--header 'X-SIGNATURE: iAwfUngiCyjgmugEoyeug6vXr2EEkYlOyCfmr4NjAOVmSS2PcallniKb1ufPqIUUYCJicDvqFj3UElhO0OtHAg==' \
--header 'X-PARTNER-ID: d7c03ddb-ce99-41e5-90b2-0a3e36291ddb' \
--header 'X-EXTERNAL-ID: 175721826805344434795918982984024840' \
--header 'CHANNEL-ID: MTAPI' \
--data '{
    "partnerReferenceNo": "d35d239a140a4244aee576fc2ba873ca",
    "balanceTypes": [
        "DEPOSIT"
    ],
    "additionalInfo": {
        "deviceId": "device-mac",
        "channel": "API"
    }
}'

‍

Request Samples
2001100
{
    "responseCode": "2001100",
    "responseMessage": "Successful",
    "name": "Your Brand Name",
    "accountInfos": {
        "balanceType": "DEPOSIT",
        "availableBalance": {
            "value": "1000000.00",
            "currency": "IDR"
        },
        "balance": {
            "value": "1000000.00",
            "currency": "IDR"
        },
        "pendingBalance": {
            "value": "0.00",
            "currency": "IDR"
        },
        "frozenBalance": {
            "value": "0.00",
            "currency": "IDR"
        }
    }
}

‍

4091100
{
  "responseCode": "4091100",
  "responseMessage": "Conflict"
}

‍

4001101
{
    "responseCode": "4001101",
    "responseMessage": "Invalid Field Format partnerReferenceNo"
}

‍

Response Samples