{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-app/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Testing","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"testing","__idx":0},"children":["Testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this guide to validate that your Loyalty integration correctly registers members, receives loyalty notifications, handles merchant activation, and supports deregistration flows."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before deploying your Loyalty integration to production, validate that your system can successfully:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Register loyalty members and link payment cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Receive and process loyalty notifications"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle merchant onboarding requests"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Support on-terminal loyalty registration flows"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Process deregistration requests"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle repeated notifications safely"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The scenarios below represent the core integration behaviours expected for Loyalty API integrations."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"test-your-integration","__idx":2},"children":["Test your integration"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-register-a-loyalty-member","__idx":3},"children":["1. Register a loyalty member"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing","__idx":4},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that your system can register a loyalty member and link their payment card for future loyalty activity."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger","__idx":5},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a test member in your system"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Register the member using the Loyalty API"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Link the payment card to the member profile"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["API endpoint ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /loyalty/members"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify","__idx":6},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The member registration request succeeds"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The payment card is linked to the member"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Future transactions made with the card can trigger loyalty activity"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result","__idx":7},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The payment card is linked to the member profile and can be recognised by Tyro on future transactions."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-handle-new_registered_card-notifications","__idx":8},"children":["2. Handle ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NEW_REGISTERED_CARD"]}," notifications"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing-1","__idx":9},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that your system can receive and process NEW_REGISTERED_CARD notifications."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For on-terminal loyalty, this event may contain pre-accumulated points associated with the payment card before registration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger-1","__idx":10},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use a payment card that has accumulated pre-registration loyalty activity"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Register the member using the Loyalty API"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Receive the NEW_REGISTERED_CARD notification"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify-1","__idx":11},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your webhook endpoint receives the notification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The notification is processed successfully"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Any pre-accumulated point information is handled correctly by your system"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result-1","__idx":12},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your system successfully receives and processes the NEW_REGISTERED_CARD notification."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3-receive-loyalty-activity-notifications","__idx":13},"children":["3. Receive loyalty activity notifications"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing-2","__idx":14},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that Tyro sends loyalty activity notifications when a registered payment card is used in a transaction."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger-2","__idx":15},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use a registered payment card to complete a transaction"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure the merchant location has completed merchant activation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Tyro sends a loyalty notification to your webhook endpoint"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify-2","__idx":16},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your webhook endpoint receives the loyalty notification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The notification contains the transaction information required by your integration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your system can safely process repeated notifications"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result-2","__idx":17},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your system receives the loyalty notification for the registered transaction."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4-test-terminal-led-registration","__idx":18},"children":["4. Test terminal-led registration"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing-3","__idx":19},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that customers can register through the on-terminal loyalty experience."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger-3","__idx":20},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Complete a transaction using an unregistered payment card"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Display the loyalty sign-up QR code on the terminal"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Complete registration using the QR code flow"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify-3","__idx":21},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The QR code is displayed on the terminal"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The sign-up flow opens successfully"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The memberReference value is passed through the registration flow"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The payment card is linked after registration"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result-3","__idx":22},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The customer successfully registers through the terminal-led sign-up flow and the payment card is linked to their loyalty profile."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"5-test-merchant-activation","__idx":23},"children":["5. Test merchant activation"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing-4","__idx":24},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that your system can receive and process merchant onboarding requests."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger-4","__idx":25},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Submit a merchant onboarding request"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Receive a NEW_ONBOARDING_REQUEST notification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retrieve the onboarding request details"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Submit an APPROVE or REJECT decision"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify-4","__idx":26},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your system receives the onboarding notification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The onboarding request can be retrieved successfully"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your decision is submitted successfully"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The merchant location becomes available for loyalty activity after approval"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result-4","__idx":27},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your system successfully supports the merchant activation flow."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"6-deregister-a-payment-card","__idx":28},"children":["6. Deregister a payment card"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing-5","__idx":29},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that a payment card can be removed from a loyalty member profile."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger-5","__idx":30},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deregister a linked payment card"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Attempt a transaction using the deregistered card"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify-5","__idx":31},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The deregistration request succeeds"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The payment card is no longer linked to the member"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Transactions using the deregistered card no longer trigger loyalty activity"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result-5","__idx":32},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The deregistered payment card no longer generates loyalty activity."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"7-deregister-a-member","__idx":33},"children":["7. Deregister a member"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"what-youre-testing-6","__idx":34},"children":["What you’re testing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that a loyalty member can be removed from the loyalty program."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"trigger-6","__idx":35},"children":["Trigger"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deregister the loyalty member"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Attempt transactions using previously linked payment cards"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"verify-6","__idx":36},"children":["Verify"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The member deregistration request succeeds"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Linked payment cards are no longer associated with the member"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Loyalty activity is no longer generated for that member"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"expected-result-6","__idx":37},"children":["Expected result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The loyalty member is successfully removed from the program and no longer participates in loyalty activity."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-handling","__idx":38},"children":["Error handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your integration should safely handle:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Repeated notifications"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Invalid or expired member references"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deregistered payment cards"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Merchant locations that have not completed activation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Temporary webhook delivery failures"]}]}]},"headings":[{"value":"Testing","id":"testing","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Test your integration","id":"test-your-integration","depth":2},{"value":"1. Register a loyalty member","id":"1-register-a-loyalty-member","depth":3},{"value":"What you’re testing","id":"what-youre-testing","depth":4},{"value":"Trigger","id":"trigger","depth":4},{"value":"Verify","id":"verify","depth":4},{"value":"Expected result","id":"expected-result","depth":4},{"value":"2. Handle NEW_REGISTERED_CARD notifications","id":"2-handle-new_registered_card-notifications","depth":3},{"value":"What you’re testing","id":"what-youre-testing-1","depth":4},{"value":"Trigger","id":"trigger-1","depth":4},{"value":"Verify","id":"verify-1","depth":4},{"value":"Expected result","id":"expected-result-1","depth":4},{"value":"3. Receive loyalty activity notifications","id":"3-receive-loyalty-activity-notifications","depth":3},{"value":"What you’re testing","id":"what-youre-testing-2","depth":4},{"value":"Trigger","id":"trigger-2","depth":4},{"value":"Verify","id":"verify-2","depth":4},{"value":"Expected result","id":"expected-result-2","depth":4},{"value":"4. Test terminal-led registration","id":"4-test-terminal-led-registration","depth":3},{"value":"What you’re testing","id":"what-youre-testing-3","depth":4},{"value":"Trigger","id":"trigger-3","depth":4},{"value":"Verify","id":"verify-3","depth":4},{"value":"Expected result","id":"expected-result-3","depth":4},{"value":"5. Test merchant activation","id":"5-test-merchant-activation","depth":3},{"value":"What you’re testing","id":"what-youre-testing-4","depth":4},{"value":"Trigger","id":"trigger-4","depth":4},{"value":"Verify","id":"verify-4","depth":4},{"value":"Expected result","id":"expected-result-4","depth":4},{"value":"6. Deregister a payment card","id":"6-deregister-a-payment-card","depth":3},{"value":"What you’re testing","id":"what-youre-testing-5","depth":4},{"value":"Trigger","id":"trigger-5","depth":4},{"value":"Verify","id":"verify-5","depth":4},{"value":"Expected result","id":"expected-result-5","depth":4},{"value":"7. Deregister a member","id":"7-deregister-a-member","depth":3},{"value":"What you’re testing","id":"what-youre-testing-6","depth":4},{"value":"Trigger","id":"trigger-6","depth":4},{"value":"Verify","id":"verify-6","depth":4},{"value":"Expected result","id":"expected-result-6","depth":4},{"value":"Error handling","id":"error-handling","depth":2}],"frontmatter":{"seo":{"title":"Testing"}},"lastModified":"2026-05-20T04:34:17.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/app/apis/loyalty/testing","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}