CollectionService

sealed interface CollectionService : CommonService

Retrofit service interface for the MTN MOMO Collection product API.

Extends CommonService with collection-specific operations: request-to-pay and request-to-withdraw.

Functions

Link copied to clipboard
@DELETE(value = "/collection/{apiVersion}/invoice/{referenceId}")
abstract suspend fun cancelInvoice(@Path(value = "referenceId") referenceId: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<Unit>

Cancels a pending invoice before it is paid or expires.

Link copied to clipboard
@DELETE(value = "/collection/{apiVersion}/preapproval/{referenceId}")
abstract suspend fun cancelPreApproval(@Path(value = "referenceId") referenceId: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<Unit>

Cancels an active pre-approval, immediately revoking the merchant's ability to debit the payer's wallet without per-transaction consent.

Link copied to clipboard
@POST(value = "/collection/{apiVersion}/invoice")
abstract suspend fun createInvoice(@Body invoice: Invoice, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String, @Header(value = "X-Reference-Id") uuid: String): Response<Unit>

Creates a Collection invoice, prompting the Invoice.intendedPayer to pay via their wallet.

Link copied to clipboard
@POST(value = "/collection/{apiVersion}/preapproval")
abstract suspend fun createPreApproval(@Body preApproval: PreApproval, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String, @Header(value = "X-Reference-Id") uuid: String): Response<Unit>

Creates a pre-approval, allowing the merchant to charge the PreApproval.payer's wallet without per-transaction prompts until the pre-approval expires.

Link copied to clipboard
@GET(value = "/{productType}/{apiVersion}/account/balance")
abstract suspend fun getAccountBalance(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<AccountBalance>

Makes a request to get the Account Balance. This only works with the ProductType.COLLECTION. It seems to break with the other API product type.

Link copied to clipboard
@GET(value = "/{productType}/{apiVersion}/account/balance/{currency}")
abstract suspend fun getAccountBalanceInSpecificCurrency(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Path(value = "currency") currency: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<AccountBalance>

Makes a request to get the Account Balance in a specific currency. This only works with the ProductType.COLLECTION. It seems to break with the other API product type. User EUR as the currency on sandbox

Link copied to clipboard
@GET(value = "/{productType}/{apiVersion}/accountholder/msisdn/{accountHolderId}/basicuserinfo")
abstract suspend fun getBasicUserInfo(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Path(value = "accountHolderId") accountHolder: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<BasicUserInfo>

Makes a request to get the Basic ApiUser Info.

Link copied to clipboard
@GET(value = "/collection/{apiVersion}/invoice/{referenceId}")
abstract suspend fun getInvoiceStatus(@Path(value = "referenceId") referenceId: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Retrieves the current status of a previously created invoice.

Link copied to clipboard
@GET(value = "/collection/{apiVersion}/preapproval/{referenceId}")
abstract suspend fun getPreApprovalStatus(@Path(value = "referenceId") referenceId: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Retrieves the current status of a previously created pre-approval.

Link copied to clipboard
@GET(value = "/{productType}/{apiVersion}/transfer/{referenceId}")
abstract suspend fun getTransferStatus(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Path(value = "referenceId") referenceId: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Makes a request to get the transfer status.

Link copied to clipboard
@GET(value = "/{productType}/oauth2/{apiVersion}/userinfo")
abstract suspend fun getUserInfoWithConsent(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<UserInfoWithConsent>

Makes a request to get the ApiUser Info with Consent.

Link copied to clipboard
@POST(value = "/collection/{apiVersion}/requesttopay")
abstract suspend fun requestToPay(@Body momoTransaction: MomoTransaction, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String, @Header(value = "X-Reference-Id") uuid: String): Response<Unit>

Initiates a request-to-pay, prompting the specified payer to approve a payment.

Link copied to clipboard
@POST(value = "/{productType}/{apiVersion}/requesttopay/{referenceId}/deliverynotification")
abstract suspend fun requestToPayDeliveryNotification(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Path(value = "referenceId") referenceId: String, @Body momoNotification: MomoNotification, @Header(value = "notificationMessage") notificationMessage: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Makes a request to send a delivery notification.

Link copied to clipboard
@GET(value = "/collection/{apiVersion}/requesttopay/{referenceId}")
abstract suspend fun requestToPayTransactionStatus(@Path(value = "referenceId") referenceId: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Retrieves the status of a previously initiated request-to-pay transaction.

Link copied to clipboard
@POST(value = "/collection/{apiVersion}/requesttowithdraw")
abstract suspend fun requestToWithdraw(@Body momoTransaction: MomoTransaction, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String, @Header(value = "X-Reference-Id") uuid: String): Response<Unit>

Initiates a request-to-withdraw, prompting the specified payer to approve a withdrawal.

Link copied to clipboard
@POST(value = "/collection/{apiVersion}/requesttowithdraw/{referenceId}/deliverynotification")
abstract suspend fun requestToWithdrawDeliveryNotification(@Path(value = "apiVersion") apiVersion: String, @Path(value = "referenceId") referenceId: String, @Body momoNotification: MomoNotification, @Header(value = "notificationMessage") notificationMessage: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Sends a delivery notification for a request-to-withdraw transaction.

Link copied to clipboard
@GET(value = "/collection/{apiVersion}/requesttowithdraw/{referenceId}")
abstract suspend fun requestToWithdrawTransactionStatus(@Path(value = "referenceId") referenceId: String, @Path(value = "apiVersion") apiVersion: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Retrieves the status of a previously initiated request-to-withdraw transaction.

Link copied to clipboard
@POST(value = "/{productType}/{apiVersion}/transfer")
abstract suspend fun transfer(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Body momoTransaction: MomoTransaction, @Header(value = "X-Reference-Id") uuid: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<Unit>

Makes a request to transfer funds.

Link copied to clipboard
@GET(value = "/{productType}/{apiVersion}/accountholder/{accountHolderIdType}/{accountHolderId}/active")
abstract suspend fun validateAccountHolderStatus(@Path(value = "productType") productType: String, @Path(value = "apiVersion") apiVersion: String, @Path(value = "accountHolderId") accountHolderId: String, @Path(value = "accountHolderIdType") accountHolderType: String, @Header(value = "Ocp-Apim-Subscription-Key") productSubscriptionKey: String, @Header(value = "X-Target-Environment") environment: String): Response<ERROR CLASS: Symbol not found for ResponseBody>

Makes a request to check the account holder status.