Add Money using Cash In Code

Enables consumers to do a secure cash in transaction using a cash in code.

Cash In Code may be represented as a one-time 7-digit code or a bar code generated by the Maya app. It can be used as basis of the customer’s add money request. This will help keep the transaction secure by ensuring that the customer has authorized the transaction to their own wallet account.

ℹ️ Discuss your preferred cash in code, if 7-digit code or bar code, with your Maya Relationship Manager.

How to generate and use Cash In Code

How to make transfer using Cash In Code

This implementation will require user to generate the Cash In Code via their Maya app. This Cash In code will be used to identify the target wallet account on the transfer transaction.

Step 1: Create a Transfer

Create an intent to transfer using Cash In code as the recipient on the transfer request.

ℹ️ When using Cash In codes to represent the recipient, account type of the recipient must be CODE on the transfer request.

No movement of funds will be done yet at this stage and to give you some time to validate the transfer details such as the recipient information, fees that may be incurred, etc.

⚠️ Idempotency. Creating transfers always result in a new intent even when using the same request reference number. For more details, see General Knowledge in using Mi3.


  1. Consumer uses their Maya mobile app to generate their Cash In code, the 7-digit code or bar code, depends on the partner’s preference. This Cash In code will be presented to your system.
  2. With the API keys provisioned to you, your system calls the /transfers endpoint of MI3 to create an intent to transfer using the Cash In Code.
  3. MI3 returns the initial status of the transfer intent with the transferId.

See API specifications for Creating a Transfer.

ℹ️ There is currently no time limit for executing a transfer after creation. Change on this behavior may be imposed in the future.

Step 2: Execute a Transfer

When intent to transfer has been created, you may use this endpoint to execute the transfer. This endpoint will require the transferId acquired during Create a Transfer.

⚠️ Execution of a particular transfer can only be done ONCE. Whether it’s Approved or Declined, succeeding execution will return an error.

After successful call, state will become APPROVED or DECLINED depends on the transaction processing status.


  1. With the API keys provisioned to you, your system calls the /transfers/{transferId}/execute endpoint of MI3 providing the transferId to execute the intent to transfer.
  2. MI3 returns the updated status of the transfer to your system.
  3. Your system to notify user on status of the transfer request.

See API specifications for Executing a Transfer.

Retrieving a Transfer


Once a transaction has been Created or Executed, you can retrieve its details or status using the provided transferId.


  1. With the API keys provisioned to you, your system calls the /transfers/{transferId} endpoint of MI3 providing the transferId to retrieve the transfer status and details.
  2. MI3 returns the transfer details to your system.

See API specifications for Retrieving a Transfer.


Did this page help you?