O roteamento inteligente envia cada pagamento ao adquirente com mais chance de aprová-lo.Ver orquestração →
ExelPay
Desenvolvedores

Referência da API

Todos os endpoints, parâmetros e respostas da ExelPay Merchant API.

A referência da API está disponível em inglês.

ExelPay Merchant API · 2026-09-01

  • https://api.exelpay.com (Production)
  • https://api.sandbox.exelpay.com (Sandbox)

Payment intents

GET/v1/payment_intents

List payment intents

Scope: payments:read

ParameterInTypeRequired
limitqueryintegerno
starting_afterquerystringno

Responses: 200 400 401 403 404 409 422 429

POST/v1/payment_intents

Create a payment intent

Scope: payments:write

ParameterInTypeRequired
no
amount_minorbodyinteger | stringyes
currencybodystringyes
terminal_idbodystringyes
capture_methodbodyautomatic | manualno
merchant_referencebodystringno
customer_idbodystringno
metadatabodyobjectno
expires_in_secondsbodyintegerno

Responses: 201 400 401 403 404 409 422 429

GET/v1/payment_intents/{id}

Retrieve a payment intent

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

POST/v1/payment_intents/{id}/cancel

Cancel an intent

Cancels an intent that holds no money at a provider. While the authorization is UNKNOWN (processing) the cancellation is recorded and a late approval is reversed automatically; the intent reports `canceled` once the reversal is confirmed. Authorized or captured transactions must be voided or refunded instead (409 invalid_state).

Scope: payments:write

ParameterInTypeRequired
no
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

POST/v1/payment_intents/{id}/confirm

Confirm an intent with a payment method

Creates a transaction and runs authorisation synchronously. The response carries the transaction in its resulting state: captured/authorized, declined, failed, requires_action (complete the 3DS challenge) or processing (UNKNOWN: poll or wait for the webhook).

Scope: payments:write

ParameterInTypeRequired
no
idpathstringyes
payment_methodbodystringyes
return_urlbodystringno
surcharge_disclosurebodyobjectno
orderbodyobjectno

Responses: 200 400 401 403 404 409 422 429

GET/v1/payment_intents/{id}/quote_surcharge

Quote the cardholder surcharge for a payment method

Returns the surcharge the cardholder would pay with this card on the intent's terminal, or zero with the gate reason. Display it before the pay button and confirm with `surcharge_disclosure` carrying the same amount and text version; a changed quote refuses the confirm with `surcharge_quote_stale`. A read: nothing is persisted.

Scope: payments:read

ParameterInTypeRequired
idpathstringyes
payment_methodquerystringyes

Responses: 200 400 401 403 404 409 422 429

Transactions

GET/v1/transactions

List transactions

Scope: payments:read

ParameterInTypeRequired
limitqueryintegerno
starting_afterquerystringno

Responses: 200 400 401 403 404 409 422 429

GET/v1/transactions/{id}

Retrieve a transaction

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

GET/v1/transactions/{id}/history

State transition history

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

GET/v1/transactions/{id}/routing

Routing decisions (why each attempt went to its provider)

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

GET/v1/transactions/{id}/pricing

Pricing snapshot, fee bookings and ledger journals of a transaction

What the transaction was priced with at its first routing decision (FX quote, markup, provider amount, fee estimate) and what was booked on each capture and refund. Immutable: later schedule changes never alter it.

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

POST/v1/transactions/{id}/capture

Capture an authorisation (full or partial)

Scope: payments:write

ParameterInTypeRequired
no
idpathstringyes
amount_minorbodyinteger | stringno
finalbodybooleanno

Responses: 200 400 401 403 404 409 422 429

POST/v1/transactions/{id}/void

Void an open authorisation

Scope: payments:write

ParameterInTypeRequired
no
idpathstringyes
reasonbodystringno

Responses: 200 400 401 403 404 409 422 429

Refunds

POST/v1/transactions/{id}/refund

Refund a captured transaction (full or partial)

Scope: refunds:write

ParameterInTypeRequired
no
idpathstringyes
amount_minorbodyinteger | stringno
reasonbodystringno

Responses: 200 400 401 403 404 409 422 429

GET/v1/refunds/{id}

Retrieve a refund

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

Customers

POST/v1/customers

Create a customer reference

Scope: customers:write

ParameterInTypeRequired
no
referencebodystringno

Responses: 201 400 401 403 404 409 422 429

Cardholder data (Vault)

Routes that receive card data. Served by the Vault (CDE) under the same hostname; the raw-PAN payment route additionally requires the terminal's raw-PAN channel to be enabled by ExelPay after PCI evidence review (ADR-0014 §5). Hosted fields remain the default integration.

POST/v1/tokens

Tokenize a card (hosted fields)

Authenticated with a publishable key (`ExelPay-Publishable-Key` header) from an allowed browser origin. Returns a token and the payment method registered for the account; the number is encrypted in the Vault and never returned. Test publishable keys accept published test cards only.

Scope: tokens:write

ParameterInTypeRequired
no
cardbodyobjectyes
customer_idbodystringno

Responses: 201 400 401 403 404 409 422 429

POST/v1/payments

Create and confirm a payment with a card number (raw-PAN channel)

Server-to-server payment with the card in the request body. Available only on terminals whose raw-PAN channel ExelPay has enabled (merchants using it are in PCI DSS SAQ D scope, ADR-0014). The Vault tokenizes the card and the platform runs the same pipeline as `POST /v1/payment_intents` + `confirm`; the response carries the transaction plus the token to reuse. A retry with the same Idempotency-Key reuses the minted token and replays the answer.

Scope: payments:write

ParameterInTypeRequired
no
amount_minorbodyinteger | stringyes
currencybodystringyes
terminal_idbodystringyes
capture_methodbodyautomatic | manualno
merchant_referencebodystringno
customer_idbodystringno
metadatabodyobjectno
return_urlbodystringno
cardbodyobjectyes

Responses: 201 400 401 403 404 409 422 429

Sandbox

POST/v1/test/payment_methods

Sandbox tokenizer (published test cards only)

Available to test-environment credentials only. Rejects any number that is not a provider-published test card; the number is never stored or echoed.

Scope: payments:write

ParameterInTypeRequired
no
cardbodyobjectyes
customer_idbodystringno

Responses: 201 400 401 403 404 409 422 429

POST/v1/test/transactions/{id}/complete_three_ds

Complete the Simulator 3DS challenge

Scope: payments:write

ParameterInTypeRequired
no
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

Chargebacks

GET/v1/transactions/{id}/chargebacks

Chargebacks and disputes of a transaction

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

GET/v1/chargebacks/{id}

Retrieve a chargeback stage with its dispute

Scope: payments:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429

POST/v1/chargebacks/{id}/accept

Accept liability for a chargeback

Closes the dispute as CLOSED_ACCEPTED; the debit already posted stays. Only RECEIVED chargebacks can be accepted.

Scope: disputes:write

ParameterInTypeRequired
no
idpathstringyes
reasonbodystringno

Responses: 200 400 401 403 404 409 422 429

POST/v1/chargebacks/{id}/evidence

Submit evidence references for a chargeback

Records the merchant's representment before `due_at` (stage becomes REPRESENTED). Evidence is a list of document references (object-storage keys, ids, URLs); never upload documents or cardholder data here. Until a connector exposes dispute submission the representment is recorded for manual submission.

Scope: disputes:write

ParameterInTypeRequired
no
idpathstringyes
evidencebodyobject[]yes
notebodystringno

Responses: 200 400 401 403 404 409 422 429

Webhooks

GET/v1/webhook_events

Event log of the account (newest first; `after` pages forward from an event id)

Scope: webhooks:read

ParameterInTypeRequired
typequerystringno
afterquerystringno
limitqueryintegerno

Responses: 200 400 401 403 404 409 422 429

GET/v1/webhook_events/{id}

Retrieve an event with its delivery attempts

Scope: webhooks:read

ParameterInTypeRequired
idpathstringyes

Responses: 200 400 401 403 404 409 422 429