Docs

Quotes

Lock a rate for 10 minutes. A quote is single-use.

A quote locks a rate for 10 minutes. Creating an order against it consumes it, so each quote works once.

Direction is inferred

You do not name onramp or offramp on a quote. Pulse infers the direction from the currency pair. Exactly one side must be NGN.

  • NGN to crypto is an onramp.
  • Crypto to NGN is an offramp.

If neither side is NGN, or both are, the request fails with invalid_currency.

Network is required

network names the chain the crypto leg settles on. Pulse never infers it, because a wrong chain means unrecoverable funds. Send one of these.

BASE  POLYGON  ARBITRUM  OPTIMISM  ETHEREUM  CELO  PLASMA

An unsupported asset fails with invalid_asset. An unsupported chain for that asset fails with invalid_network.

Create a quote

curl https://engine-api.pilot.pulseshiga.io/v1/quotes \
  -H "X-API-Key: <your key>" \
  -H "Content-Type: application/json" \
  -d '{
    "source_currency": "NGN",
    "destination_currency": "USDT",
    "network": "POLYGON",
    "amount": "150000"
  }'
{
  "status": true,
  "data": {
    "id": "0198e2c1-…",
    "rate": "1538.46",
    "source_amount": "150000",
    "destination_amount": "97.50",
    "expires_at": "2026-07-30T11:42:00Z"
  }
}

amount is the source amount as a decimal string. expires_at is when the rate lapses. Create the order before then.

Onramp quotes support ₦10,000–₦100,000,000. Offramp quotes support a minimum of 10 USDC or USDT and a maximum amount whose NGN destination is ₦100,000,000. An amount outside the applicable range returns invalid_amount.

Pricing and fees

The quoted rate is all-in. It includes Pulse's pricing adjustment and any network conversion cost required for the route. Pulse does not add a separate fee to the quoted source or destination amount.

The order read keeps destination.amount as the quoted amount. Reconcile settlement against the amount on order.completed, because execution can produce a different delivered amount.

Expiry and reuse

A quote is spent once an order consumes it, or the 10 minutes pass. A create against a spent quote fails with quote_expired. Get a new quote and try again.

Using an onramp quote on the offramp endpoint, or the reverse, fails with quote_flow_mismatch.

Do not hold quotes

Get a quote right before you create the order. The rate you accept is returned on the order later as rate, so you do not need to keep the quote to reconcile.

See the full request and response in the Create a quote reference.

On this page