Troubleshooting
This guide helps you diagnose failures during an SDK White Label integration and decide what to do about each one. It covers the failures you handle in your own application. These include warm-up problems, declined payments, service errors, card-read issues, timeouts, and failed refunds.
For the full catalog of result codes and messages, see Error codes reference.
Read the result code first
Every failure carries a result code with a prefix that tells you the failure class. Read the prefix before anything else.
| Prefix | Class | Where it comes from |
|---|---|---|
00 | Approved | The transaction succeeded. |
1- | Terminal error | Local terminal, card reading, or operator (for example, 1-02 canceled, 1-21 generic terminal error). |
33- | Host error | Payment service (SEP): an HTTP error or an issuer decline. |
TransactionResult.result, with a human-readable resultMessage. Treat 00 as approval and any other value as a non-approval.Note: Host errors are moving from the older4-xxprefix to33-xx— the digits stay the same (4-503becomes33-503). Terminals that are not yet updated may still return4-xxx. Treat4-xxxand33-xxxas equivalent.
Identify the error screen
For card flows, the SDK shows one of two error screens before returning control to your app. Pix has its own error screen.
| Screen | When it appears | What the operator should do |
|---|---|---|
![]() | The terminal read the card correctly, but the issuer declined the payment (33-<reason>). | The decline comes from the cardholder's bank, not the terminal. Ask for another card or have the customer contact their bank. |
![]() | The payment service failed or was unavailable — a host error or timeout (33-5xx). | Check the transaction status before retrying, so you do not charge twice. If it keeps happening across terminals, treat it as a platform incident. |
Categorize the failure
Every non-approval falls into one of these categories. The category tells you whether to handle it in your app, ask the operator to act, or contact Getnet.
| Category | What it means | What you do |
|---|---|---|
| Cardholder / card | The issuer or card declined the operation. | Ask for another card or have the customer contact their bank. Not a terminal or app fault. |
| Transient — retry | A temporary condition. | Wait a few seconds and retry. After a timeout, check the transaction first. |
| Duplicate / in progress | The transaction may already be complete or canceled. | Check the printed receipt or query the payment before retrying. Do not retry blindly. |
| Reference not found | The paymentId or reference does not match a transaction. | Confirm the paymentId and the environment used in the refund or query. |
| Merchant / product configuration | The merchant, product, card brand, or terminal is not enabled for this operation. | Collect the terminal code and merchant ID and contact Getnet. |
| Authentication | The terminal could not authenticate with the gateway. | Confirm the environment and that you configured valid credentials. |
| Integration / request | Validation rejected the request, or the request was malformed. | A software issue — capture the result payload and fix the integration. |
| Platform / system | A server-side failure. | Retry once after a short wait. If it persists or affects several terminals, treat it as a platform incident. |
Common scenarios
Each scenario states the symptom, its likely cause, and the fix.
Warm-up fails and the SDK never becomes ready
Failure(cause) through setOnWarmUpStatus, or an operation never starts.- Check the terminal's Wi-Fi or mobile data.
- Inspect the warm-up error code.
-1to-5are network conditions — retry.401means theclientId/clientSecretor the environment is wrong.404means the terminal is not registered for this configuration. - To recover, call
ApoloSdk.shutdown(), then configure andbuild()again. - If a
401,404, or422persists, confirm the credentials,terminalCode, and environment with Getnet.
See the warm-up codes in Error codes reference.
A payment is declined
33-<reason> and the "Payment declined" screen appears.- Ask the customer for another card, or have them contact their bank.
- Escalate only if a card the customer says is valid fails on several terminals.
"Payment interrupted" — service error
33-5xx code (for example, 33-500, 33-503, 33-504).- Do not retry immediately.
- Query the transaction by
paymentIdto confirm whether it went through. - If it did not, retry once after a short wait.
- If it persists or affects several terminals, treat it as a platform incident and contact Getnet.
The card will not read
The terminal repeats "insert, tap, or swipe", or contactless fails.
- Ask the customer to insert the chip. If the chip fails, ask them to swipe the magnetic stripe.
- If the terminal detects several cards at once, ask the customer to present one card, away from other cards or a wallet.
- If a specific card fails every method, ask for another card.
Timeout — you do not know if the customer was charged
33-504) or the operation ends without a clear outcome.- Do not start a new sale for the same amount yet.
- Query the transaction by
paymentIdto confirm whether it was authorized. - Only start a new sale after you confirm the first one did not go through.
A refund or cancellation fails with "not found"
33-404 with a "not found" message.paymentId or the environment used for the refund does not match the original transaction. A wrong reference is the most common cause.- Confirm the
paymentIdof the original transaction. - Confirm you are running in the same environment where you made the sale.
- Retry the refund with the corrected reference.
The transaction is reported as duplicate or already exists
The result indicates the transaction is already in progress, already done, or already canceled.
- Check the printed receipt or query the payment before acting.
- Do not repeat the operation until you confirm its real state.
Before you contact Getnet
5xx, a locked terminal, or an internal EMV error. Collect this information before you contact them, so support can locate the transaction and reproduce the issue.| Collect | Detail |
|---|---|
| Result code | The full TransactionResult.result (for example, 33-503, 1-21) and the on-screen message. |
error_code / reason_code | For host errors, the error_code and reason_code from the response payload (details[]). |
paymentId | The paymentId (and orderId, if any) of the affected transaction. |
| Terminal | The terminal serial number and the configured terminalCode. |
| Environment | Pre-production, homologation, or production — which build the device runs. |
| Date and time | The date, time, and time zone of the event. |
| Scope | One card or terminal versus several — an isolated case or a widespread one. |
| Steps to reproduce | Amount, payment method, card brand, and what the operator did. |
Next steps
- Error codes reference — the full catalog of host, card, and warm-up codes.
- Transaction result reference — the result fields and payloads returned to your app.
- Initialization reference — the warm-up states and how to recover from
Failure. - Record telemetry — log your own diagnostic entries to correlate with the SDK's traces.
On this page

