{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Testing in production","siteUrl":"https://docs.omno.com"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"testing-in-production","__idx":0},"children":["Testing in production"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Omno provides a single production environment. You test by making real API calls against ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["test providers"]}," (test PSPs) that Omno configures on your production account."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test transactions are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," charged or billed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test providers return predefined statuses and controlled responses so you can simulate each outcome."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When testing is finished, Omno ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["removes"]}," the test providers from your configuration."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"request-a-test-setup","__idx":1},"children":["Request a test setup"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Contact Omno at ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["support@omno.com"]}," to have test providers configured on your account. In the dashboard the test providers appear under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Payment Providers → Add Provider → Authorize"]}," (dashboard labels may read \"Fake …\"):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fake Card Pay-In"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fake APM Pay-In"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fake Card Pay-Out"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fake APM Pay-Out"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After authorizing each, make sure it is added to your Router and active."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"identify-test-transactions","__idx":2},"children":["Identify test transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A transaction processed by a test provider has ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantPspId"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processorPspId"]}," equal to the test-provider ID Omno gave you. Check this field (via the webhook payload or a GET on the transaction) before touching balances."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["⚠️ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Warning:"]}," Never credit or debit real player balances for transactions processed by a test provider."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"simulate-outcomes","__idx":3},"children":["Simulate outcomes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The test provider decides the outcome from a controlled input: the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["CVC"]}," for cards, or a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["3-digit value in the recipient field"]}," for APMs."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cards-cashier-single-payment-hosted-payment-fields-payment-page","__idx":4},"children":["Cards (Cashier, Single Payment, Hosted Payment Fields, Payment Page)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use these test cards (test provider only):"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Card number"},"children":["Card number"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Expiry"},"children":["Expiry"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"CVC"},"children":["CVC"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Success"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["4539148803436467"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12/29"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["123"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failure (before provider)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["6011111111111117"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12/29"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["123"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3DS challenge"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["378282246310005"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12/29"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["123"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Cardholder name can be any value. For 3DS, you're taken to a simulated provider page where you choose the final outcome."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Card decline simulation by CVC:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"CVC"},"children":["CVC"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["001"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["General card decline"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["004"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card expired"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["005"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card inactive or blocked"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["011"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Insufficient funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["013"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid card number"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["015"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CVV check failed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["026"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction marked as fraud"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["033"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provider timeout"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["034"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provider rejected request"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["040"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Service unavailable"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"apm-cashier-direct-link-payment-page","__idx":5},"children":["APM (Cashier, Direct Link, Payment Page)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The test APM provider uses the same 3-digit codes as card declines, but you enter the value in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["recipient field"]}," instead of the CVC."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"payout-confirm--reject","__idx":6},"children":["Payout confirm / reject"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payout decline simulation:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Code"},"children":["Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["002"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction not allowed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["004"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card expired"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["005"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card inactive"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["011"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Insufficient funds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["013"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid card number"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["016"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid amount or currency"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["026"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Marked as fraud"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["033"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction timeout"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["034"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Rejected by provider"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["040"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Service unavailable"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For payouts that require manual approval, exercise both ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis"},"children":["confirm and reject"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"outcome-coverage","__idx":7},"children":["Outcome coverage"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Outcome"},"children":["Outcome"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"How to simulate"},"children":["How to simulate"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Success"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Success card / valid input."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Decline (by provider)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CVC / recipient decline codes above."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failure (before provider)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failure card, or a routing/provider restriction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Timeout"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card CVC ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["033"]},", or payout code ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["033"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3DS (card)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Card ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["378282246310005"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ℹ️ ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Failures"]}," occur before the provider (routing or provider restrictions); ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["declines"]}," are returned by the provider; ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["success"]}," depends on valid input and routing eligibility."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"build-it-","__idx":8},"children":["Build it →"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/go-live"},"children":["Go-live checklist"]}," · ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/concepts/webhooks"},"children":["Webhooks"]}]}]}]},"headings":[{"value":"Testing in production","id":"testing-in-production","depth":1},{"value":"Request a test setup","id":"request-a-test-setup","depth":2},{"value":"Identify test transactions","id":"identify-test-transactions","depth":2},{"value":"Simulate outcomes","id":"simulate-outcomes","depth":2},{"value":"Cards (Cashier, Single Payment, Hosted Payment Fields, Payment Page)","id":"cards-cashier-single-payment-hosted-payment-fields-payment-page","depth":3},{"value":"APM (Cashier, Direct Link, Payment Page)","id":"apm-cashier-direct-link-payment-page","depth":3},{"value":"Payout confirm / reject","id":"payout-confirm--reject","depth":3},{"value":"Outcome coverage","id":"outcome-coverage","depth":3},{"value":"Build it →","id":"build-it-","depth":2}],"frontmatter":{"title":"Testing in production","description":"Omno runs one environment — you test in production against test providers (test PSPs) that return controlled outcomes, with test cards and decline codes.","seo":{"title":"Testing in production"}},"lastModified":"2026-11-06T11:46:00.427Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/testing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}