Pepvote Support Center

Pricing

Set vote, candidate registration, and quadratic credit prices.

Use these organizer endpoints from your server. GET needs read. PUT needs write.

A pricing update replaces every existing row for that pricing type. Link a ready payment business first. Every currency must appear in that business's supportedCurrencies. The event must also have the matching pay-to-vote or pay-to-register-candidate setting and plan.

Endpoints

MethodPathScopeDescription
GET/voting-events/:idOrCode/pricing/votereadGet pay-to-vote prices.
PUT/voting-events/:idOrCode/pricing/votewriteReplace pay-to-vote prices.
GET/voting-events/:idOrCode/pricing/candidate-registrationreadGet candidate registration prices.
PUT/voting-events/:idOrCode/pricing/candidate-registrationwriteReplace candidate registration prices.
GET/voting-events/:idOrCode/pricing/quadratic-creditsreadGet quadratic credit prices.
PUT/voting-events/:idOrCode/pricing/quadratic-creditswriteReplace quadratic credit prices.

amount is in the currency's main unit, not cents or kobo: 5 with usd is $5.00 and 500 with ngn is ₦500. Use up to two decimals, or whole numbers for JPY and XOF. Pepvote converts to the provider's smallest unit itself. Each currency has a minimum charge, listed under payment overview; a lower amount returns 422.

Vote pricing

pricingMode is per_vote, per_ballot, or per_position. Each price needs amount and a three-letter currency. positionId, weight, and label are optional.

curl -X PUT "https://api.pepvote.com/voting-events/POLL26/pricing/vote" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" \
  -H "User-Agent: my-app/1.0" \
  -H "Content-Type: application/json" \
  -d '{"pricingMode":"per_ballot","prices":[{"amount":5,"currency":"usd","label":"One ballot"}]}'
{
  "data": {
    "pricingMode": "per_ballot",
    "prices": [
      {
        "id": "j57price01",
        "amount": 5,
        "currency": "usd",
        "positionId": null,
        "weight": null,
        "label": "One ballot"
      }
    ]
  }
}

Candidate registration pricing

pricingMode is per_registration or per_position. Each price needs amount and currency. positionId and label are optional. Candidate registration pricing does not accept weight.

curl -X PUT "https://api.pepvote.com/voting-events/BOARD26/pricing/candidate-registration" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" \
  -H "User-Agent: my-app/1.0" \
  -H "Content-Type: application/json" \
  -d '{"pricingMode":"per_position","prices":[{"positionId":"j57position01","amount":25,"currency":"usd","label":"President"}]}'
{
  "data": {
    "pricingMode": "per_position",
    "prices": [
      {
        "id": "j57registrationprice01",
        "positionId": "j57position01",
        "amount": 25,
        "currency": "usd",
        "label": "President"
      }
    ]
  }
}

Quadratic credit pricing

Send one row for each quadratic position. Each row needs positionId, pricingModel, and currency.

For ratio, send amountPerCredit. You can also set minimumPurchaseCredits and maximumPurchaseCredits.

For tiers, send tiers. Each tier needs creditAmount and amount. label is optional.

curl -X PUT "https://api.pepvote.com/voting-events/POLL26/pricing/quadratic-credits" \
  -H "Authorization: Bearer $PEPVOTE_API_KEY" \
  -H "User-Agent: my-app/1.0" \
  -H "Content-Type: application/json" \
  -d '{"prices":[{"positionId":"j57position01","pricingModel":"tiers","currency":"usd","tiers":[{"creditAmount":10,"amount":2,"label":"Starter"},{"creditAmount":50,"amount":8,"label":"Bundle"}]}]}'
{
  "data": {
    "prices": [
      {
        "positionId": "j57position01",
        "pricingModel": "tiers",
        "currency": "usd",
        "tiers": [
          {
            "id": "j57tier01",
            "creditAmount": 10,
            "amount": 2,
            "label": "Starter"
          },
          {
            "id": "j57tier02",
            "creditAmount": 50,
            "amount": 8,
            "label": "Bundle"
          }
        ]
      }
    ]
  }
}

The public voting interface uses credits for ratio checkout and tierId for tier checkout. Read public voting for that flow.

Was this helpful?

Last updated September 6, 2026

On this page