Set up for the sandbox
- Artifact. Use
rinne-sdk-checkout-sandbox. It pairs the card reader’s test kernel with Rinne’s test environments. - Environment. Always pass
environment = Environment.SANDBOXtoPayments.getReady. The sandbox artifact defaults to a Rinne-internal environment, and a token minted with your sandbox key is refused there withACCESS_TOKEN_REJECTED. - Token. Your backend mints it at
https://api-sandbox.rinne.com.br/core/v1/terminal/tokenwith your sandbox API key, exactly as in production. - Device. A physical Android phone with NFC and Google Play services. Emulators fail attestation by design.
- Card. Any contactless card, phone or watch. The sandbox reads it like production does and never charges it.
Choose the outcome with the amount
The sandbox acquirer decides from the last two digits of the amount in cents. Anything not listed approves.
Worked examples: R 10,51 (
1051) is declined for insufficient funds; R$ 10,96 (1096) fails. The card never overrides the amount.
The simulator applies the same table to the amount in its Sale section, so you can rehearse a test plan before touching a phone.
What a sandbox transaction looks like
A sandbox transaction appears on the API like any other, with therequestId and metadata you sent and the payment method the operator chose. Two differences from production:
- No card digits. Simulated approvals return no card data, so the record carries no masked last four digits or brand.
- No settlement. Nothing is sent to the acquirer for settlement, so ledger entries and cashouts do not follow.
Verify each test
Look the transaction up with therequestId you sent. The transactions list requires the transaction.list permission, which a key scoped only to tap_on_phone.* does not hold, so use a key that carries both permissions:
The response holds one transaction with the amount you charged,
payment_method matching what the operator chose, your metadata, and the status from the table above. A transaction.created webhook fires at the same time if you have one configured, and transaction.status-changed follows a refund.A test plan that covers the integration
What the sandbox cannot prove
- Attestation on your production build. The sandbox artifact relaxes the integrity check; production enforces it and also checks the install source. See Going to production.
- Sensory branding. The approval sound, animation and haptic come from the card reader with a real production card.
- Your production credentials. The production artifact, keys and merchant enablement are provisioned separately by Rinne.

