Skip to main content
By the end, you will have signed your requests with a JSON Web Signature (JWS), funded a test Account, and sent your first Transfer.

Step 1: Get your test API keys

In the Dashboard, go to Developers → API Keys. You’ll see two key pairs: test (sk_test_...) and live (sk_live_...). Copy the test secret key.

Step 2: Register JWS keys

Money-moving endpoints (create transfer, return transfer, or verify a standardized Mexican bank account number (CLABE)) require each request to be signed. Follow Generate JWS keys to create a keypair and upload the public key. Come back here when you’re done.

Step 3: List your Accounts

Every organization starts with a Root Account. Fetch it with a GET request to /v2/accounts:
cURL
The response should look like this:
JSON

Using our SDK

If you’re using Python or Node, install the Python SDK or Node SDK to call the API. The SDK signs each request with JWS and handles pagination. First install our SDK:
Now list your accounts:
Keep the id (acc_...) and root_account_number_id (acno_...) from the response. You use root_account_number_id to fund the test Account, and id to create the outbound Transfer.

Step 4: Fund your test Account

Your test Account starts empty. Simulate an inbound transfer so you have money to send:
cURL
The response is the simulated inbound Transfer that funds your Account:
JSON
Currencies are represented as integersThe Fintoc API represents money in the smallest currency unit as an integer with no decimals. MXN 590.13is59013.CLPhasnominorunit,soatransferof590.13 is `59013`. CLP has no minor unit, so a transfer of 59,013 CLP is also 59013.See Currencies.
More simulation recipes (failures, returns, rejected payouts) live in Test your integration.

Step 5: Send your first Transfer

cURL
The response is the outbound Transfer you created:
JSON

Step 6: Create a webhook endpoint

Webhooks notify your server when a transfer settles, so you do not poll for status. Go to Developers → Webhooks in the Dashboard, add your URL, and subscribe to transfer.inbound.succeeded and transfer.outbound.succeeded.

Test the integration

Confirm the full flow worked end to end:
  1. After Step 4, list your Accounts again and confirm available_balance increased by 59013.
  2. Confirm the Step 5 transfer returns "status": "succeeded".
  3. Confirm your endpoint receives a transfer.outbound.succeeded webhook for the transfer.