Getting started guide


Welcome to API-money !

You have received the technical elements needed to test our solution (test platform URL, Sandbox credentials), as well as the associated documentation:

Cf: Find your credentials on the dashboard

The aim of this document is to help you understand and manipulate the "objects" used in API-money, as well as the associated operations: user account, wallet, bank account, cash-in, transfer, cash-out...

It is intended to help you use the API-money solution by showing you the main requests. It does not describe all requests, nor does it reflect all the possibilities offered by API-money!

1. Authenticating your requests

Did you click on the Sandbox URL and get an error 1002?

Don't panic, it's normal.

See our FAQ for more details. :  I get an error code 1002 when I click on the Sandbox URL. Why do I get this?

Requests from your server to the API-money server must be authenticated.
This is done by calculating an HMAC, based on credentials and a timestamp.

A simple example is displayed in the next paragraph.

2. Retrieve your created accounts

GET /accounts

In particular, you'll receive a Partner account identifier, in the form: AS-XXXXXX for a standard account or AB-XXXX for a business account.

More explanations in the dedicated "dynamic" FAQ : « I get the error {“code”:”1002″,”message”:”Authorization error: Full authentication is required to access this resource »}. What should I do? »

If you've been able to recover the parameters of your created accounts, the hardest part is over.
You now know how to authenticate your requests and communicate with the API-money platform.

Now you can move to the next step.

3. Create 2 accounts (User & Business)

Now we will need to create two accounts (User & Business) in order to prepare the transfer between those 2 wallets accounts.

For example, you can create your first "standard" user account, i.e. a "private" account:

POST /accounts/standard (view documentation)

You will receive a "standard" user account ID, in the following format: AS-XXXXXXXXXXXXXXXX

And then create a second account, a "Business" account:

POST /accounts/business (view documentation)

You will receive a "business" user account ID, in the following format: AB-XXXXXXXXXXXXXXXX

The data to be sent to the Body must be in JSON (stringify), then added to the stringToSign for Sign encoding (hmac SHA256) and added to the request Body.

4. Associate wallets to accounts

You must now associate an "EMONEY" Wallet with each of these 2 accounts created before (User & Business).

To do this, use the following query for each wallet :

POST /wallets (view documentation)

You will receive an EMONEY Wallet ID, in the following format: WE-XXXXXXXXXXXXXXXX

5. Create a "partner" wallet (fees) for commissions

In the same way, you will create a Wallet, but of the FEES type this time, to collect your Partner commissions:

POST /wallets (view documentation)

You will receive a FEES Wallet ID, in the following format: WF-XXXXXXXXXXXXXXXX

6. Feed the 1st "user" wallet (cash-in)

The next step is to inject money into the system via a cash-in or deposit to the wallet (EMONEY type):

POST /cash-in/creditcards/init

Example body:

    “partner_ref” : “REF-CO-A11621675”,
    “tag” : “My cash-in”,
    “receiver_wallet_id” : “WE-4662390787667836”,
    “fees_wallet_id” : “WF-8367182202500409”,
    “amount” : 60,
    “fees” : 5,
    “return_url” : “”,
    “lang” : “fr”,
    “auth_timeout_delay” : 86400

The cash-in is then in Initiated state after the request. You will then need to retrieve the link for payment via the query response.

The credit card is not registered initially, but can be registered during the first cash-in, at the user's discretion.

Please use your test credit cards: Test credit cards

Once you've entered your card details on the test platform, you'll be taken to an AuthenticationOrAccountVerificationSuccessful page, where you should click "Continue Transaction".

In production, the user will encounter a 3DSecure validation page.

The transaction is then in the Authorized state, and you receive a transaction identifier on the API-Money dashboard in the following format: TX-XXXXXXXXXXXXXXXX 

To confirm the transaction and transfer the funds to the account, you'll need to use the API request : 

PUT /cash-in/TX-XXXXXXXXXXX (view documentation)


Know that wallet and cash-in limits depending on the KYC level of the accounts :

Please note :

A User can carry out a cash-in on his own Wallet as well as on another User's Wallet.

7. Make a transfer between the 2 wallets (excluded partner)

Now it's a matter of transferring money from the Wallet that has just been credited to the second Wallet:

POST /transfers (view documentation)

If the Partner (= yourself) takes a commission on transfers, this is deducted from the "sender" Wallet.

Furthermore, the transfer amount also includes the commission.

Therefore, considering the example of a €10 transfer and a €1 commission.

For a transfer of €10 with a commission of €1 deducted from the "sender" wallet,
enter :
- amount = 11
- fees = 1

For a transfer of €10 with a commission of €1 deducted from the "receiver" Wallet,
enter :
- amount = 10
- fees = 1

You will receive a transaction identifier in the following format: TX-XXXXXXXXXXXXXXXXXXXX

8. Associate a bank account to receiver account

To make a cash-out (withdrawal) from a Wallet, you must first associate a bank account with it, via is bank account number (IBAN):

POST /bankaccounts (view documentation)

You will receive a bank account identifier in the following format: BA-XXXXXXXXXXXXXXXX

9. Withdraw money from the receiving wallet (cash-out)

Once a bank account has been associated with Wallet, it is possible to make a cash-out:

POST /cash-out (voir la documentation)

You will receive a transaction identifier in the following format: TX-XXXXXXXXXXXXXXXX

Please note that the cash-out will be set to "To Validate" once you've made the request.

For the test platform (sandbox), you'll need to use API-Money support.

For the production platform, validations are handled by our KYC teams, so you don't need to send us any requests.