Pricing
Learn how Pulse prices a trade, how to read a rate, and how to show indicative rates before a customer starts a trade.
Pulse prices every trade with one rate. This page explains what the rate includes, how to turn a rate into amounts, and how to show prices before a customer commits to a trade.
How pricing works
A rate is the naira value of one unit of crypto. The same unit applies to onramp and offramp trades.
Every rate that Pulse returns includes these parts:
- The market price at the size of the trade.
- Pulse's pricing adjustment. Pulse charges for its service through the rate.
- Network costs to move the crypto on the network you choose.
Pulse deducts no separate fee from the quoted amounts. To earn on each trade, add a partner fee. Pulse builds it into the same rate.
Read a rate
Use the rate to convert between the two amounts of a trade.
| Flow | The rate is | To get the other amount |
|---|---|---|
| Onramp | The naira the customer pays for one unit of crypto. | Divide the naira by the rate. |
| Offramp | The naira the customer receives for one unit of crypto. | Multiply the crypto by the rate. |
For example:
- Onramp. A customer spends ₦150,000 at a rate of
1538.46. They receive 150,000 ÷ 1538.46 = 97.500097 USDT. - Offramp. A customer sends 102.432779 USDT at a rate of
1366.75. They receive ₦140,000.
A quote rounds each computed amount to the precision of its currency. See Choose which amount to fix.
For the same asset, the onramp rate is usually higher than the offramp rate. The gap between them is the spread. Rates move with the market, and a large trade can get a different rate from a small trade.
Indicative rates and quotes
Pulse gives two kinds of price.
| Indicative rate | Quote | |
|---|---|---|
| Endpoint | GET /v1/rates | POST /v1/quotes |
| Use it to | Show prices before the customer starts a trade. | Lock the price of one trade. |
| Scope | Every asset and network in one call. | One asset, network, and amount. |
| Locked | No. It moves with the market. | Yes, until expires_at. |
| Amount | Optional. | Required. See Amount limits. |
| Partner fee | Not included. | Included when you set partner_fee. |
| Creates an order | No. | Yes, through the matching order endpoint. |
A quote rate can differ from the indicative rate for the same trade because the market moves. Show the customer the quote rate before they pay. The order reports the effective rate and amounts after funding. See Funding window.
Get indicative rates
GET /v1/rates returns a buy rate and a sell rate for every supported asset and
network.
buyis the onramp rate: the naira the customer pays for one unit of crypto.sellis the offramp rate: the naira the customer receives for one unit of crypto.
Size the rates
A rate depends on the size of the trade. Two optional amounts set the size, and each one sizes only its own side.
| Parameter | Sizes | Unit | Minimum and default |
|---|---|---|---|
fiat_amount | buy | The naira the customer spends. | ₦15,000 |
crypto_amount | sell | The crypto the customer sells. | 10 |
Without an amount, Pulse prices that side at the minimum order size. The amounts have no maximum, so you can price a trade that is larger than a quote allows.
Filter the rates
Two optional filters limit the response.
| Parameter | Returns |
|---|---|
asset | Only this asset: USDT or USDC. |
network | Only this network. See Supported networks. |
Request the rates
This request prices a ₦5,000,000 buy and a 1,000 USDT sell on every network.
curl "https://engine-api.pilot.pulseshiga.io/v1/rates?asset=USDT&fiat_amount=5000000&crypto_amount=1000" \
-H "X-API-Key: <your key>"| Field | Description |
|---|---|
rates[].asset | The crypto asset. |
rates[].network | The network of the asset. |
rates[].buy | The onramp rate for the size in fiat_amount. |
rates[].sell | The offramp rate for the size in crypto_amount. |
When you use GET /v1/rates, know that:
- Pulse returns a pair only when it has both a
buyand asellrate. - A pair can be missing for a short time, or when Pulse cannot price the amount you sent for it.
- Rows are sorted by
asset, then bynetwork. - A filter that matches no available pair returns an empty
rateslist, not an error. - Indicative rates do not include a partner fee.
Errors
| Code | Cause |
|---|---|
invalid_amount | fiat_amount is below ₦15,000, or crypto_amount is below 10. |
invalid_asset | asset is not a supported asset. |
invalid_network | network is not a supported network. |
Next steps
- Create a quote to lock a rate for an order.
- Add a partner fee to earn on each trade.