Quote the fees
POST /v1/partners/quotesWhat a payment would cost, without creating one. Same pricing inputs, same engine, no side effects.
| Permission | collect-payment |
| Idempotency | Not required — there is no effect to make idempotent |
| Answers | 200 |
Request
Section titled “Request”POST /v1/partners/quotesAuthorization: Bearer sk_live_xxxxxxxxxxxxxxxxx-partner-signature: <hmac-sha256 of the raw body, hex>Content-Type: application/json{ "method": "virtual_account", "amount": "100000", "channel": "BRI" }| Field | Required | Notes |
|---|---|---|
method | yes | virtual_account, qris, or ewallet |
amount | yes | Decimal string |
channel | depends | Same rule as creating: bank for a virtual account, vendor for e-wallet, omitted for QRIS |
organization_id | no | Pricing can differ per organisation, so quote with the same one you will create with. Must be linked to your account |
Response
Section titled “Response”{ "data": { "amount": "100000.0000", "gross_amount": "100000.0000", "fee": "4000.0000", "net_amount": "96000.0000", "currency": "IDR", "quoted_at": "2026-09-03T07:00:00.000Z" }, "request_id": "req_…"}The quote exposes one partner-facing fee; Moria keeps the provider/margin split internally. Before creating a payment instrument, check that the resulting gross_amount is a whole IDR amount. A fractional provider gross is rejected at creation time with REQUEST_INVALID_PAYLOAD; the amount is never rounded.
Use it for
Section titled “Use it for”- Showing a customer the total before they commit
- Checking a fee change before it surprises you in a settlement report
- Deciding a price on your side that has to account for what you will net
- Create a payment once you know the number