Skip to main content

Withdrawals

Withdrawal to Xprizo Wallet

Withdrawals are carried out when a merchant wants to transfer funds from their wallet to a user's wallet. These transactions are initiated through the process of generating withdrawal requests. Typically, withdrawals can be done using three different methods. Each method provides merchants with flexibility in how they transfer funds, catering to their specific preferences and requirements. This flexibility ensures seamless fund transfers between merchants and users within the platform.

Create, Commit, Check

Employ this method if the final check is done on the platform's end, that is the platform verifies that the transaction was completed and will then update the user's wallet accordingly.

This method requires the platform to continually poll Xprizo in case there is no response to confirm whether the transaction was successfully created or not.

Flow

User Journey Mapping (26).jpg

Steps

  • Create a pending transaction on your system.
  • Create and commit a payment transaction on Xprizo and wait for the response. Transaction/SendPayment
    • If you receive an Ok Response (200), then the transaction was successfully processed and you can set your payment transaction as completed.
    • If you receive one of the following error codes (400,401,403,500), then the transaction did not complete and you should cancel your transaction (or correct the problem and try again).
    • If you do not receive a response from Xprizo or a timeout you will need to keep checking Xprizo until you can determine the status of the transaction. Transaction/Status
  • Check transaction status
    • Active - Approved
    • Pending – Pending approval
    • NotFound – Timed-out or cancelled

Create, Approve, Check

Use this method if the creation and approval of transactions are not done at the same time. For instance, the platform might initiate the transaction, and the merchant may approve the transaction

With this method, the platform needs to continuously poll Xprizo in case there's no immediate response from Xprizo to confirm whether the transaction was successfully created or not.

Flow

User Journey Mapping (25).jpg

Steps

  • Create a pending transaction on your system. 
  • Create a payment transaction on Xprizo and wait for the response. Transaction/SendPayment
  • Use the key from the returned response to approve the transaction Transaction/Approval or wait for the merchant to approve the transaction (you can only approve the transaction if the merchant gave you full or approval rights to their wallet).
  • If you are approving the transaction
    • If you get an OK Response (200) then you should check the status of the transaction. Transaction/Status
  • If you will wait for the merchant to approve the transaction
    • and you have set the approval callback option in your settings Preference/SetApprovalWebhook then you will receive a callback once the transaction has been approved
    • and you have NOT set the approval callback option then you will have to keep checking the status of the transaction until it is approved, rejected or expires. Transaction/Status

At any time you can cancel the transaction by calling Transaction/Cancel

Create, Hold, Check

Use this method if you prefer Xprizo to conduct the final check. Xprizo will verify that the transaction has been created on the platform by sending a callback and awaiting a valid response. Depending on the platform's response, Xprizo will either confirm the transaction or cancel it.

By using this method involves Xprizo initiating a transaction and placing it on hold. It will then send a callback to verify whether the platform has successfully updated the transaction on its end. If Xprizo receives a positive response, then the transaction will be completed. If a negative response is received or there is no response within 24 hours, the transaction is voided.

Flow

User Journey Mapping (27).jpg

Steps

  • Create a pending transaction on your system
  • Create a payment transaction on Xprizo and wait for the response. Transaction/SendPayment 
    • Xprizo will create a transaction marked as ‘Hold’ and return 200 (success)
    • If you get the 200 (success) response then leave your transaction as pending
    • If the transaction failed with any error 400,401,403,500 excluding a timeout mark the transaction as rejected (Xprizo automatically deleted failed transactions)
  • Xprizo will a send callback to the platform (make sure you have the "Payment Webhook" setup in Xprizo) Preference/SetApprovalWebhook
    • You should now set the transaction on your platform as paid and respond to the callback with 200 (success) response.
    • It is recommended to check the status of the transaction on Xprizo to ensure that is completed Transaction/Status.
    • Xprizo will keep sending callbacks until the platform responds
    • If your platform does not response for 24 hours
      • The transaction is voided
      • Funds released back to the merchant
    • If the platform responds with a success
      • The Hold is removed and the transaction is marked as active
    • If the platform responds with an error
      • The transaction is voided
      • Funds released back to the merchant

Withdrawal to Bank Account

When a user needs to transfer funds from their wallet to someone's bank account, they can easily initiate this process by providing the recipient's name, account number, and the desired amount to be transferred. This withdrawal method facilitates direct transfers to bank accounts, ensuring seamless transactions between users and their chosen recipients.

Flow

User Journey Mapping (29).jpg

Steps

  • Create a pending transaction on your system. 
  • Create a withdrawal request on Xprizo using this endpoint Transaction/BankWithdrawal 
  • After this the entered amount will be debited from your Xprizo wallet and the withdrawal will be created as a Hold transaction. This Hold transaction will be reviewed by the back office for approval.
  • If the back office user
    • approves of the transaction will go into the processing and after the successful processing this transaction will be marked as Active and the user will be notified using your approval webhook. You can configure your approval webhook using this Preference/SetApprovalWebhook.
    • rejects the transaction the amount deducted will be reverted back to the user's wallet and the transaction will be marked as Void.
    • and you have NOT set the approval callback option then you will have to keep checking the status of the transaction until it is approved, rejected, or expires. Transaction/Status