Merchant Onboarding
This guide is for your merchants. The goal is to start using Transacty in a few easy steps.
What you get from Transacty
When a merchant is onboarded, they receive:
apiKeysecretbaseUrl—https://api.transacty.ai
These credentials are used to call the Transacty APIs.
One merchant account uses one API key type (scopes control access), with separate wallet pockets per currency. Do not sum unlike currencies into one headline number.
Regions and rails
Transacty supports multiple settlement rails. The same API key and the same transaction list / webhook URL serve all of them — only the API paths and checkout UX differ.
| Region | Rail | Pay-in API | Settlement wallet | Checkout |
|---|---|---|---|---|
| Bangladesh | bangladesh | /v1/payins | BDT | Provider link from paymentInfo.content |
| Brazil | brazil | /v1/br/payins | BRL | PIX from paymentInfo |
| India | india | /v1/h2h/* | USDT | Merchant-built UPI UI |
| Europe | europe | /v1/eur/* | USDC | Redirect to checkoutUrl |
Create pay-ins and payouts from your server only (HMAC). The dashboard uses a separate login (JWT) and never holds the API secret.
Main endpoints merchants use
Auth / identity
GET /v1/me
Balance
GET /v1/balance
Bangladesh pay-in / payout
POST /v1/payins·GET /v1/payins/:idPOST /v1/payouts·GET /v1/payouts/:id
Brazil PIX
POST /v1/br/payins·GET /v1/payins/:idPOST /v1/br/payouts·GET /v1/payouts/:id
India UPI (H2H)
POST /v1/h2h/payin-instances·GET /v1/h2h/payin-instances/:transactionIdPOST /v1/h2h/buyer-confirms-payment
Europe Open Banking
POST /v1/eur/payin-instances·GET /v1/eur/payin-instances/:transactionIdPOST /v1/eur/payout-instances·POST /v1/eur/payout-instances/:transactionId/approve
Transactions
GET /v1/transactions(filter byrail,type,status)
HMAC headers (required for /v1/*)
Every request must send:
X-Transacty-KeyX-Transacty-SignatureX-Transacty-Timestamp
The signature payload format is <timestamp>.<raw_json_body>, hashed with
HMAC-SHA256 using the merchant secret.
Important notes for merchants
- Use
transactionIdfrom Transacty as your main reference. platformOrderIdis the provider-side reference (for support / escalation).- Do not call any payment provider directly from your integration.
- Each currency is a separate wallet pocket;
pendingBalanceis in-flight pay-ins. - Poll the relevant status endpoint when you need the latest state, or wait for webhooks.
Super quick test (Bangladesh)
Check identity
GET /v1/me
Check balance
GET /v1/balance
Create a pay-in
POST /v1/payins, then complete the payer step from paymentInfo.content
Poll until success
GET /v1/payins/:id until success
Create a payout
POST /v1/payouts, then GET /v1/payouts/:id until a final state
For India and Europe, follow the dedicated India and Europe sections.
How to go live
Complete KYC
Activate your account in the portal.
Create an API key
Grant payin:create, payout:create, and balance:read scopes.
Implement your server integration
Build against Bangladesh, India, and/or Europe as needed.
Configure your webhook
Set your webhook URL and handle payin.completed / payin.failed.
Switch to live
Test with environment=test, then switch keys to live when ready.