NAV Navbar
Example

Introduction

This Documentation is dedicated to dusupay Merchants or developers with websites/webapps that have/need to integrate dusupay for payments processing.

Welcome to the Dusupay's Merchant/Website API Doc! Use this Documentation to send and receive funds on your website or webapp in a more reliable manner.

You can view examples/sample codes in the dark area to the right, where applicable.

Get started

  1. Go to https://dashboard.dusupay.com/register to create a merchant account if you haven't

  2. Once you sign in, you will generate API keys (Public and Secret). The secret key should be copied and stored in a safe place because it will be needed for you to carry out payouts.

  3. You can always re-generate the secret key whenever you thing it's compromised or need to change it.

  4. Your account can instantly receive payments as soon as it’s created. However, to have your account fully approved, contact legal@dusupay.com.

Request/Response

Request

Base Url

https://api.dusupay.com

All Requests

Response

General Response format

{
    "code": 202,
    "status": "accepted",
    "message": "Transaction in Progress",
    "data": {}
}
Parameter Description
code this is similar to the standard HTTP status codes
status simple meaning of the status code
message Any message for the data returned
data can contain an object or list.

Response codes

Code Description
200 We will only respond with 200 when transactions complete. Especially for synchronous requests
202 We have received your request but it has not completed. It’s being processed
400 When required data or parameters are missing
401 When the request does not include the api_key and/or the secret-key in the header
404 When the resource requested is not found
422 When the request has been received but can not be processed. The reason for failure will always be availed in the message parameter
500 Request failure due to server error in our system

NB

Key notes in a nutshell

Redirection

Async Processing

Callback/Webhook

Payouts

IPN Security

Transaction Status updates

Sandbox

User Experience - Mobile Money

Integration Workflow

Get provider_ids

Collecting funds

  1. Go to your merchant account under api settings and get your api/pub key
    Set a public callback/webhook url under your merchant account. Read more here
    Set a webhook-hash to secure your wobhook endpoint. Read more here

  2. Compose your request data and convert it to a json string

  3. Set a request header, content-type: application/json . The secret-key header is not needed for collections

  4. POST the json string to the collections api.

  5. Decode the json response returned by the api and store any transaction details you need to use later

  6. We will send callback data when the transaction status changes to the webhook url

Paying out funds

  1. Go to your merchant account under api settings and get your api/pub key
    The same url set as webhook url above will be used. The transaction details posted to it will help you identify transactions on your app/website and act accordingly.

  2. Compose your request data and convert it to a json string

  3. Set a request header, content-type: application/json .

  4. Set the secret-key header using the secret key.
    you can re-generate it if you lost it from your merchant account api settings.

  5. POST the json string to the payouts api.

  6. Decode the json response returned by the api and store any transaction details you need to use later

  7. We will send callback data when the transaction status changes to the webhook url

Request Authorization

At Collection

At Payout

Note

Obtaining API keys

  1. api_key - Under your merchant account, Click settings from the side menu. Got to API Settings and you will see it.

  2. secret-key - Under the API settings tab, Click the edit(pencil icon) button. Then Generate the secret key.

Note

Receiving Money

Introduction

How it work

  1. Customers will pay you using multiple payment options in different countries that have different currencies per provider or network used.
  2. These funds collected are deposited to your merchant account that you created earlier. Funds can be recieved in multiple currencies and stored as received with no conversion Therefore you will not loose value
  3. Your merchant account is in position to store value in different currencies from different countries that we can later collectively settle to your bank accounts in any country we support.

Example

You can request a payment of 10 USD via mobile money airtel_ug.

Take Note

  1. You will have to implemement a webhook/callback url and add it to the merchant account settings

    We will post all payments made through your merchant account to that url whenever the transaction status changes.

  2. For some payments especially online banking, customers need to complete their payments from a web interface.

    Therefore, in the request response, we will return a field called payment_url that contains a url that you will need to redirect the client for them to complete/approve the payment.

    For payments that do not need to be completed from the web, the payment_url field will be empty

Collection

Sample Request

Request payments at the comfort of your home currency.

POST: https://api.dusupay.com/v1/collections
{ 
    "api_key": "pk_eridsdsde23e23e2. Get this from your merchant account settings", 
    "currency": "USD", 
    "amount": 0.2,
    "method": "MOBILE_MONEY/CARD/BANK/CRYPTO", 
    "provider_id": "e.g airtel_ug, mtn_ug. Get list of providers from the Providers API", 
    "account_number": "256777111000",
    "merchant_reference": "Your payment reference", 
    "narration": "Short Payment reason",
    "redirect_url": "optional. used for payments completed via payment_url returned ",
    "account_name": "optional",
    "account_email": "optional",
    "voucher": "optional. Required for Ghana vodafone mobile money"
}
Parameter Type Description
api_key string, required Obtained from merchant account settings
currency string, required You can use your home currency when making requests. e.g USD

You will receive your funds at market rate into your merchant sub-account account.
amount int/double, required 2 decimal places allowed for double.
method string, required MOBILE_MONEY, CARD, BANK, CRYPTO
provider_id string, required e.g airtel_ug, mtn_ug. Get list of providers from the Payment Options API
account_number string, required for MOBILE_MONEY Provide an internationally formatted number if the payment method is MOBILE_MONEY e.g 256777111777

It is not required for CARD, BANK and CRYPTO payment methods unless specified in the Exceptional Parameters that follow merchant_reference
narration string, required, 4 to 64 characters Use this to add a brief description or comment to the transaction.
redirect_url string, optional for MOBILE_MONEY Required for BANK, CARD and CRYPTO collections.

Used to redirect the client after a payment has been completed or canceled via the payment_url if returned in the request’s response.

When a request is made, a payment link is returned in the response if the payment needs to be completed by the client via the payment_url returned.

Some of the payment methods that would return a payment link include, online banking methods, visa 3d, and any other the require input via a web interface.
account_name string, optional Helps to easily lookup customer transactions.
account_email string, optional Used to email customer. Helps to easily lookup customer transactions.

Special Parameters

Network Fields Description
GhanaMobileMoney
- Vodafone
voucher String. Customer should dial *110# to generate a transaction voucher and provide it prior to the request

Sample Response

{
  "code": 202,
  "status": "accepted",
  "message": "Transaction Initiated",
  "data": {
    "id": 226,
    "request_amount": 0.2,
    "request_currency": "USD",
    "account_amount": 737.9934,
    "account_currency": "UGX",
    "transaction_fee": 21.4018,
    "total_credit": 716.5916,
    "provider_id": "mtn_ug",
    "merchant_reference": "76859aae-f148-48c5-9901-2e474cf19b71",
    "internal_reference": "DUSUPAY405GZM1G5JXGA71IK",
    "transaction_status": "PENDING",
    "transaction_type": "collection",
    "message": "Transaction Initiated",
    "customer_charged": false,
    "payment_url": "This only exists if the payment needs to be completed from a web browser.",
    "instructions": [
      {
        "step_no": "1",
        "description": "Ensure that you have sufficient balance on your MTN Mobile Money account"
      },
      {
        "step_no": "2",
        "description": "Approve the payment request sent to your phone"
      }
    ],
    "customer_charged": true
  }
}
Parameters Description
request_amount Amount requested for collection
request_currency Currency of the request amount
account_amount The converted amount from request_currency to account_currency at market rate.
account_currency The sub-account/wallet currency in your merchant account where the amount paid by the customer will be deposited.

The currency of the amount paid by the customer is determined by the provider_id used to pay.
transaction_fee This is the fee charged off the paid amount. Whether the merchant is charged or the customer, depending on your merchant setting, the fees will be included in this field.
total_credit This is the amount less the transaction_fee deposited in your account.
provider_id This is the provider the customer is expected to pay from
merchant_reference This is the reference passed earlier in the request
internal_reference This is our internal reference. Useful when dealing with transaction issues. Store it.
transaction_status The status of the transaction
customer_charged This indicates whether it’s the customer that was charged or not.

Under your merchant account settings, you can define whether we should charge you or the customer paying.
payment_url Optional This is a url where the customer should be redirect to complete the payment.

It's not mandatory for us to return a value for this field. It's only returned if the payment has to be completed from a web browser.

Therefore always redirect the user to it whenever it contains a url value otherwise tell the customer to approve the payment from their phone number if it's mobile money or inform them that their transaction is being processed.
Once we send you an IPN or webhook data to your webhook/callback url, you can then inform the customer that the payment has completed or failed.

This is common for online banking.
instructions Optional This is only returned where we see fit. This means it could be empty in the response. Whenever it's returned, Please ensure to show the instructions returned such that the customer is aware of what to do next.

This is mainly used for mobile money payments or requests that return an empty payment_url.

We recommend that you display the instructions to the customer as a pop-up modal or new screen with a button that leads them to another screen where they can view the current state of their transaction.
This will initally be Pending/Processing and once we notify you that the transaction has completed or failed, you can can show it to the customer with the appropriate message returned from our api data.

Card Payments

Local Cards

provider_id description
local_ngn Local Mastercard/Verve Nigeria

International Cards

provider_id description
international_usd 3D card payments to collect USD
international_ugx 3D card payments to collect UGX
international_kes 3D card payments to collect KES

Crypto Payments

provider_id description
btc_usd Crypto payments to collect USD
btc_eur Crypto payments to collect EUR
btc_gbp Crypto payments to collect GBP

Redirect URL

Description

NB

Redirect Data

-GET parameters such as below will be attached to the redirect url;

Parameter Description
reference This is your merchant transaction reference
status Transaction status
message Response message.

Sending Money

Introduction

How it work

Payout

Sample Request

Request payments at the comfort of your home currency.

Request Headers

Parameter Examples Description
secret-key SECK3298j923 Use your merchant account secret key
POST: https://api.dusupay.com/v1/payouts
{
    "api_key": "PUBK-24b72aebb821aea177483039677df9d3",
    "currency": "USD",
    "amount": 0.2,
    "method": "MOBILE_MONEY",
    "provider_id": "mtn_ug",
    "account_number": "256777044237",
    "account_name": "Hillary Namanya",
    "account_email": "optional@email.com",
    "merchant_reference": "AdIVeSAdeLEsta",
    "narration": "Hospital Bill"
}

Request Parameters

Parameter Type Description
api_key string, required Obtained from merchant account settings
currency string, required You can use your home currency when making requests. e.g USD

You will receive your funds at market rate into your merchant sub-account account.
amount int/double, required 2 decimal places allowed for double.
method string, required MOBILE_MONEY, BANK
provider_id string, required e.g airtel_ug, mtn_ug. Get list of providers from the Payment Options API
account_number string, required Internationally formatted number required if method is MOBILE_MONEY

For European,UK,Germany bank payouts, set account_number to contain the IBAN
account_name string, required The name of the customer’s account
account_email string, optional The email address of the customer
merchant_reference string, required, 4 to 36 characters This is a unique transaction reference generated by your system.

You can try using UUID version 4.
narration string, required, 4 to 64 characters Use this to add a brief description or comment to the transaction.
extra_params Object, optional This field is mainly used to pass data that applies to specific payout methods or providers that follow below

Extra parameters

Description

Example payout with extra parameters
{
    "api_key": "PUBK-5678g7ytrd7uyu8guyyj",
    "currency": "USD",
    "amount": 0.2,
    "method": "BANK",
    "provider_id": "bank_gh",
    "account_number": "1000909898989",
    "account_name": "Hillary Namanya",
    "account_email": "optional@email.com",
    "merchant_reference": "AdIVeSAdeLEsta",
    "narration": "Hospital Bill",
    "extra_params": {
        "bank_code": "6876132",
        "branch_code": "7898"
    },
}
Method Extra fields Description
Uganda
- BANK
bank_code The Bank code of Ugandan Bank
Kenya
- BANK
bank_code The Bank code of Kenyan Bank
Tanzania
- BANK
bank_code The Bank code of Tanzanian Bank
Nigeria
- BANK
bank_code The Bank code of Nigeria Bank
Ghana
- BANK
bank_code The Bank code of Ghanaian Bank
branch_code The Branch code of Ghanaian Bank. Required for GHS

An api to get Branch Codes can be found here.
USA
- BANK
routing_number Bank Routing number
swift_code Bank Swiftcode
bank_name Bank Name e.g (BANK OF AMERICA)
beneficiary_address e.g San Francisco, 4 Newton
Europe
- BANK
bank_code Bank code provided by the payment options api e.g bank_fr (for France), bank_de (for Germany)
routing_number The swift code can be used here
swift_code Bank Swiftcode
postal_code Beneficiary postal code e.g 80489
street_number e.g 31
street_name e.g Handelsbank Elsenheimer St
city e.g Munchen
bank_name Bank Name e.g (LLOYDS BANK)
U.K
- BANK
routing_number The swift code can be used here
swift_code Bank Swiftcode
postal_code Beneficiary postal code e.g 80489
street_number e.g 31
street_name e.g Handelsbank Elsenheimer St
city e.g Munchen
bank_name Bank Name e.g (LLOYDS BANK)
bank_code Bank code provided by the payment options api e.g bank_at (for Australia), bank_be (for Belgium)

NB

Miscellaneous

Transaction Statuses

Status Reason
PENDING When a payment is waiting for processing.
FAILED When a payment failed
COMPLETED When a payment completed
CANCELLED When a customer cancelled a payment

Webhooks/IPNs

  1. All collection and payout transaction callbacks will be sent to the url set as the webhook url under your merchant account settings.

  2. A POST request with json data will be sent to your webhook url

  3. We require that you provide a secure webhook url. Therefore only https urls can be set or called-back.

Setting webhook

  1. Click the edit button under Api Settings of the merchant account settings.
  2. Set the Webhook URL field with your webhook URL

Calling webhook

  1. We will call your webhook url whenever the transaction status changes.

  2. You will need to acknowledge receipt of the callback by responding with http status code 200. Otherwise we will keep calling your endpoint at an interval of 10 minutes for 3 days.

Accepting webhook

  1. To ensure that the callback data sent to your webhook URL comes from our servers, you need to set a callback hash under the Api Settings.

  2. We will include a header called webhook-hash in the request sent to the callback url. e.g "webhook-hash: XXXX"

  3. You should check to make sure the webhook-hash we sent matches what was set under your merchant account before giving value to the customer.

  4. We do not generate or provide you the webhook hash. You are expected to simply generate a random string that cannot be guessed and use it as the webhook hash value wherever needed.

Responding to webhooks

Code Description
200 - OK
400 - Bad Request
401 - Unauthorised
403 - Forbidden
422 - Unprocessable entity.

Rejecting webhook

Code Description
400 - Bad Request.
- e.g when there’s a missing parameter
422 - Unprocessable entity.
- e.g when the request is fine but you cannot complete it because the amount does not match what you expected.

Note

Sample Collection IPN Data

{
    "id": 226,
    "request_amount": 0.2,
    "request_currency": "USD",
    "account_amount": 737.9934,
    "account_currency": "UGX",
    "transaction_fee": 21.4018,
    "total_credit": 716.5916,
    "customer_charged": false,
    "provider_id": "mtn_ug",
    "merchant_reference": "76859aae-f148-48c5-9901-2e474cf19b71",
    "internal_reference": "DUSUPAY405GZM1G5JXGA71IK",
    "transaction_status": "COMPLETED",
    "transaction_type": "collection",
    "message": "Transaction Completed Successfully",
    "account_number": "256777111786 - Optional",
    "account_name": "- Optional",
    "institution_name": "MTN Mobile Money - Optional"
}

Note

Sample Payout IPN Data

{
    "id": 226,
    "request_amount": 0.2,
    "request_currency": "USD",
    "account_amount": 737.9934,
    "account_currency": "UGX",
    "transaction_fee": 21.4018,
    "total_debit": 716.5916,
    "provider_id": "mtn_ug",
    "merchant_reference": "76859aae-f148-48c5-9901-2e474cf19b71",
    "internal_reference": "DUSUPAY405GZM1G5JXGA71IK",
    "transaction_status": "COMPLETED",
    "transaction_type": "payout",
    "message": "Transaction Completed Successfully",
    "account_number": "256777111786 - Optional",
    "account_name": "- Optional",
    "institution_name": "MTN Mobile Money - Optional"
}

Take note

Sample Refund IPN Data

{
    "id": 65205,
    "refund_amount": 1054,
    "refund_currency": "UGX",
    "transaction_fee": 0,
    "total_debit": 1054,
    "provider_id": "international_ugx",
    "collection_reference": "DUSUPAYXYXYXYXYXYXYXYXYX",
    "internal_reference": "RFD-DUSUPAYXYXYXYXYXYXYXYXYX-3486003",
    "transaction_type": "refund",
    "transaction_status": "COMPLETED",
    "account_number": "4860610032773134",
    "message": "Refund Processed Successfully"
}

Payment Options/providers Api

Description

Request Description

example URL:

GET: https://api.dusupay.com/v1/payment-options/collection/mobile_money/ug?api_key={{api_key}}
example Response:
{
    "code": 200,
    "status": "success",
    "message": "Request completed successfully.",
    "data": [
        {
            "id": "mtn_ug",
            "name": "MTN Mobile Money"
        },
        {
            "id": "airtel_ug",
            "name": "Airtel Money"
        }
    ]
}

Request Headers

Parameter Examples Value Description
secret-key SECK3298j923… Use your merchant account secret key

Request Query Parameters

Parameter Examples Value Description
api_key PUBK3298j923… Get your public key from your merchant account settings

Request Url Parameters

Paramater Examples Description
type collection If you want collection options returned
payout If you want payout options returned
method MOBILE_MONEY, For Mobile Money
BANK, For Bank
CARD, For Card
CRYPTO, For Crypto Currency
country NG The ISO2 code of the countries supported
e.g. UG,KE,NG,ZM,..

Response Fields

field Description
id Use id where a provider_id is required
name The provider name

Supported countries

code name Method
UG Uganda - MOBILE_MONEY (Collection, Payout)
- CARD (Collection)
- BANK(Payout)
KE Kenya - MOBILE_MONEY (Collection, Payout)
- CARD (Collection)
- BANK(Payout)
RW Rwanda - MOBILE_MONEY (Collection, Payout)
BI Burundi - MOBILE_MONEY (Collection, Payout)
GH Ghana - MOBILE_MONEY (Collection, Payout)
- CARD (Collection)
- BANK(Payout)
CM Cameroon - MOBILE_MONEY (Collection, Payout)
ZA South Africa - BANK (Collection, Payout)
NG Nigeria - CARD(Collection)
- BANK (Collection, Payout)
ZM Zambia - MOBILE_MONEY (Collection, Payout)
CI Ivory Coast - MOBILE_MONEY (Collection, Payout)
- BANK(Payout)
SN Senegal - MOBILE_MONEY (Collection, Payout)
TZ Tanzania - MOBILE_MONEY (Collection, Payout)
- BANK(Payout)
US U.S.A - CARD, CRYPTO (Collection)
- BANK(Payout)
GB United Kingdom CARD, CRYPTO (Collection)
- BANK (payout)
EU Europe CARD, CRYPTO (Collection)
- BANK (payout)

Comming soon

West African CFA franc - XOF

Cash payments

Bank Branches Api

Some countries require bank branches for bank payouts to be made. Use this api to get the branches of a given bank code.

example URL:

GET: https://api.dusupay.com/v1/bank/gh/branches/GH030100?api_key={{api_key}}

Where GH030100 is the bank_code

example Response:
{
  "code": 200,
  "status": "success",
  "message": "Request completed successfully.",
  "data": [
    {
      "code": "GH030243",
      "name": "BARCLAYS BANK(GH) LTD-NKAWKAW"
    },
    {
      "code": "GH030116",
      "name": "BARCLAYS BANK (GH) LTD-BCM"
    },
    {
      "code": "GH030653",
      "name": "BARCLAYS BANK(GH)NEW SUAME MAGAZINE"
    }
  ]
}

Request Headers

Parameter Examples Value Description
secret-key SECK3298j923… Use your merchant account secret key

Request Query Parameters

Parameter Examples Value Description
api_key PUBK3298j923… Get your public key from your merchant account settings

Request Url Parameters

Paramater Examples Description
bank_code GH030100 These come from the list of banks returned by the payment options api.
method MOBILE_MONEY, For Mobile Money
BANK, For Bank
CARD, For Card
country GH The ISO2 code of the countries supported
e.g. GH

View countries that require a branch_code from the Payout Extra Parameters section

Response Fields

field Description
code Use code where a branch_code is required
name The Branch name

Account Balance

GET: https://api.dusupay.com/v1/merchants/balance?api_key={{api_key}}
{
    "code": 200,
    "status": "success",
    "message": "Request completed successfully.",
    "data": [
        {
            "currency": "UGX",
            "balance": 5475.816
        },
        {
            "currency": "USD",
            "balance": 12
        }
    ]
}

Request Headers

Parameter | Examples | Description secret-key | SECK3298j923 | Use your merchant account secret key

Query Parameters

Parameter Examples Description
api_key PUBK3298j923 Get your public key from your merchant account settings

Refund

POST: https://api.dusupay.com/v1/refund
Sample Request
{
    "api_key": "",
    "internal_reference": "This is sent back in the api response or callback"
}
Parameter Description
api_key Merchant account public key.
internal_reference This is the internal_reference of the transaction to be refunded.
This value is returned in the api response or webhook/callback data sent to your webhook url.
Sample Response
{
    "code": 202,
    "status": "accepted",
    "message": "Refund Initiated Successfully",
    "data": {
        "id": 65205,
        "refund_amount": 1054,
        "refund_currency": "UGX",
        "transaction_fee": 0,
        "total_debit": 1054,
        "provider_id": "international_ugx",
        "collection_reference": "DUSUPAYXYXYXYXYXYXYXYXYX",
        "internal_reference": "RFD-DUSUPAYXYXYXYXYXYXYXYXYX-3486003",
        "transaction_type": "refund",
        "transaction_status": "PENDING",
        "account_number": "4860610032773134",
        "message": "Request Initiated"
    }
}

Request Headers

Parameter | Examples | Description secret-key | SECK3298j923 | Use your merchant account secret key

Query Parameters

Parameter Examples Description
api_key PUBK3298j923 Get your public key from your merchant account settings

Note

Testing Sandbox

Description

Note

Base URL

https://sandbox.dusupay.com

Test Credentials

credential value
api_key PUBK-119a612068d0ad31aa2dc2aeea346e35
secret-key SECK-119e1c847b50352ea1eb32ccba5ecd71
webhook-hash TEST-DP-fu394jn2o23odko2i3

Available Test Api Endpoints

Test Collections API

https://sandbox.dusupay.com/v1/collections

Test Payouts API

https://sandbox.dusupay.com/v1/payouts

Test MobileMoney

Test Card

Test PaymentURL returned

Test Callbacks

Moving to production.

FAQ - Frequently Asked Questions

1. Where do i find my webhook hash

You are expected to simply generate a random string that cannot be guessed and used as the webhook hash value wherever needed.



This is used to verify that the callback request was sent from dusupay and your app should accept it since only your app and our system know the webhook hash value.



All you have to make sure is that the webhook hash used on the dusupay dashboard matches the one expected by your app or website since it will be included in the webhook request header sent to your callback or webhook url.



Make sure you also avoid leading space when Copying and Pasting the webhook hash between your app and ours system.

2. We didn't received any notification/callback/IPN data or how can see the data/request body posted to the webhook url

Create a callback url from https://webhook.site or https://beeceptor.com/
and use it as a callback URL.

Run your tests and all the details of the callback request will be displayed on that webhook.site or beeceptor.com interface depending the one you used.

3. Why provider_id is required even for mobile money api requests

Adopting the idea of letting the customer choose the provider at all times early enough gives you more control on what extra data to ask from the client for those exceptional operators like Vodafone in Ghana.

As we add more operators, extra data might be required to be picked from the customer depending on the operator. Therefore it’s necessary to be aware of the operator in action.

Therefore the checkout flow would look like below;

4. Are all funds collected via different operators/provider_id in the same country combine.

Yes.

When one customer pays 1,000 UGX via airtel_ug and another pays 2,000 UGX via mtn_ug, your balance will reflect 3,000 UGX in the UGX subaccount under your merchant account.

This holds true with the assumption that there were zero transaction fees or the customer paid the transaction fees.

5. Are payouts now instant.

Yes and no.

Most of the mobile_money payouts are instant, 90% of most of the time. The other lag is based on the speed of the service provider/operator enabling the payout.
However, our system releases them instantly to be processed and paid out.

For some countries like South Africa. Our partner could take 2-4 days for the transaction to complete or reflect as complete in our system.

But most of the partners will complete the bank payout between instant e.g Nigeria and one day.

6. Where are the old dusupay api doc.

https://dusupay.com/docs/build

7. FNB Bank South Africa - 01 Invalid To Product Number. One of our clients face the error when choosing FNB bank for deposit. What does it mean? What can we recommend to the client?

Does the client have any other listed beneficiaries on their account?
The error is from FNB . It looks like they are doing a CDV check for products on the account number. Then it fails hence they are unable to complete the payment.



The issue is with the clients bank account/FNB not with EFT secure. We think the BANK account verification FNB does fails. It could be because there are other beneficiaries on the account.

Other bank accounts or banks should work.

Note that during the EFT secure payment, if the bank is unable to process payment for any reason, it will fail.

8. Alidropship

Error - Merchant account unknown

Error Processing payment

Card payment method issue

Plugins And Libraries

Plugins

Platform Link
Woocommerce Check out