openapi: 3.1.0 info: title: Loyalty Data API version: '1.0' description: >- The Loyalty Data API provides App partners with the ability to access data regarding members sales to help aggregate loyalty points. Currently the API allows apps to register their members and are notified on every transaction performed. contact: {} servers: - url: https://api.tyro.com/connect description: Production tags: - name: Registered Card - name: Member - name: Onboarding paths: /loyalty/members: post: summary: Register member for loyalty requestBody: content: application/json: schema: $ref: '#/components/schemas/register-member-request' examples: Register Member with paymentId: value: origin: memberId: member-1 paymentId: 6940871887d8 locationId: cafe-on-main-steet Register Member with memberReference: value: origin: memberId: member-1 memberReference: 8f5e6eac-4adb-4b4c-93c0-eb72fad3be35 locationId: cafe-on-main-steet description: '' responses: '202': description: > The request has been accepted. The member will be registered when a matching payment is found. Clients must not rely on the response body of this endpoint; although a JSON payload may currently be returned, it is deprecated and will be removed in a future version. '400': description: When the provided payload is not valid. content: application/json: schema: type: object properties: error: type: string description: The validation error message. examples: Missing property: value: error: '"paymentId" is required' '401': description: When you don't have a valid access token. '403': description: When you don't have the right permissions for a location. description: >- This endpoint registers a member for a participating location with the loyalty API. This notifies you of all future payments performed by the members at locations you have access to. The payment should have taken place within a 60 minute window of the registration. operationId: get-payment-by-id security: - JWT: [] tags: - Member parameters: - $ref: '#/components/parameters/header-bearer-token' delete: summary: Deregister a member for loyalty. requestBody: content: application/json: schema: $ref: '#/components/schemas/deregister-member-request' responses: '204': description: No body content. Member has been successfully deregistered. '400': description: When any mandatory request parameters are missing. '401': description: When no valid access token is provided. '403': description: >- When a valid token is provided but it has no permissions to execute the request. '404': description: When a member with the provided member id could not be found. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Unknown memberId: value: error: 'Failed to find member matching memberId: some-member-id' description: >- This endpoint deregisters a member from all participating locations with the loyalty API. You will no longer receive notifications about the payments performed by the members at locations you have access to. operationId: deregister-member security: - JWT: [] tags: - Member parameters: - $ref: '#/components/parameters/header-bearer-token' /loyalty/activities/{loyaltyActivityId}: parameters: - name: loyaltyActivityId in: path description: ID of loyalty activity to retrieve required: true schema: type: string get: summary: Get loyalty activity by Id responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/loyalty-activity' examples: Without sale object: value: id: 99fdaa02-4cb4-4948-a79e-4b69e4008feb locationId: e429f245-4dcb-4961-9d27-c40538e990b2 memberId: foo@bar.com payment: origin: paymentId: e429f245-4dcb-4961-9d27-c40538e990b2 paymentSource: EFTPOS type: PURCHASE zonedDateTime: '2021-10-11T11:00:01+11:00' breakdown: goodsAndServices: amount: '299' currency: AUD cashout: amount: '0' currency: AUD tip: amount: '0' currency: AUD surcharge: amount: '0' currency: AUD total: amount: '299' currency: AUD sale: null With sale object: value: id: 99fdaa02-4cb4-4948-a79e-4b69e4008feb locationId: e429f245-4dcb-4961-9d27-c40538e990b2 memberId: foo@bar.com payment: origin: paymentId: e429f245-4dcb-4961-9d27-c40538e990b2 paymentSource: EFTPOS type: PURCHASE zonedDateTime: '2021-05-02T08:28:13+10:00' breakdown: goodsAndServices: amount: '299' currency: AUD cashout: amount: '0' currency: AUD tip: amount: '0' currency: AUD surcharge: amount: '0' currency: AUD total: amount: '299' currency: AUD sale: value: tax: amount: 0 currency: AUD type: SALE items: - id: '1' sku: cherry-pie name: Cherry total: amount: 0 currency: AUD quantity: 1 unitPrice: amount: 0 currency: AUD unitPriceTax: amount: 0 currency: AUD staff: id: '1' table: seats: 1 number: '11' bookingId: 6dca53a9-04c7-46aa-991c-cfdf51a8f652 total: amount: -2 currency: AUD origin: saleId: abc-def-123 source: type: MEANDU status: CLOSED payments: - method: EFTPOS goodsAndServicesAmount: amount: 0 currency: AUD subtotal: amount: 0 currency: AUD discounts: - amount: 1 currency: AUD - amount: 1 currency: AUD locationId: pizza-shop closedZonedDateTime: '2021-05-02T08:28:13+10:00' openedZonedDateTime: '2022-05-02T08:28:13+10:00' '401': description: When you don't have a valid access token. '404': description: When the provided `loyaltyActivityId` does not exist. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Missing property: value: error: >- No sale was found for id: a72ca942-1cf7-47c8-8808-dd5aa095e81a description: This endpoint retrieves a loyalty activity for a registered member. operationId: get-loyalty-activity-by-id security: - JWT: [] parameters: - $ref: '#/components/parameters/header-bearer-token' /loyalty/registered-cards/{registeredCardId}: parameters: - name: registeredCardId in: path description: Id of the registered card required: true schema: type: string get: summary: Get registered card by Id responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/loyalty-card' examples: New member card: value: id: >- fe6eacb4c5f5afcf650bff0ea56fdc36-6c8a6220e6f73dde3d161ce605ec68fc7a98b93c9fb708e2674b756df6fd5826c7b55516 paymentId: e429f245-4dcb-4961-9d27-c40538e990b2 paymentSource: EFTPOS origin: memberId: foo@bar.com preAccumulatedReward: 5000 '401': description: When you don't have a valid access token. '404': description: When the provided `registeredCardId` does not exist. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Missing property: value: error: >- No card was found for id: a72ca942-1cf7-47c8-8808-dd5aa095e81a description: This endpoint retrieves a registered card for a registered member. operationId: get-loyalty-card-by-id security: - JWT: [] tags: - Registered Card parameters: - $ref: '#/components/parameters/header-bearer-token' delete: summary: Delete registered card by Id requestBody: content: application/json: schema: $ref: '#/components/schemas/deregister-member-card-request' examples: Register Member: value: origin: memberId: member-1 responses: '200': description: No body content content: {} '401': description: When you don't have a valid access token. '404': description: When the provided `Id` does not exist. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Missing property: value: error: >- No card was found for id: a72ca942-1cf7-47c8-8808-dd5aa095e81a description: This endpoint removes a registered card from a registered member. operationId: deregister-member-card security: - JWT: [] tags: - Registered Card parameters: - $ref: '#/components/parameters/header-bearer-token' /locations/merchant-onboarding/loyalty/{onboardingReference}: parameters: - name: onboardingReference in: path description: The unique reference identifier for the merchant onboarding request. required: true schema: type: string get: summary: Get merchant onboarding request by reference description: >- This endpoint retrieves the details of a merchant onboarding request for a loyalty partner to review, including the location details, business details, and the current status of each integration. operationId: get-merchant-onboarding-request-by-reference security: - JWT: [] tags: - Onboarding parameters: - $ref: '#/components/parameters/header-bearer-token' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/merchant-onboarding-request-response' examples: In progress onboarding: value: onboardingId: abc-123-ref tcLocationId: tc-cafe-main-2000 status: IN_PROGRESS locationDetails: name: Cafe on Main Street address: 1 Main Street postcode: '2000' countryIsoCode: AUS timezone: Australia/Sydney phoneNumber: '+61212345678' businessDetails: abn: '12345678901' entityName: Cafe Holdings Pty Ltd address: 1 Main Street postcode: '2000' countryIsoCode: AUS integrations: [] Completed onboarding with loyalty success: value: onboardingId: abc-123-ref tcLocationId: tc-cafe-main-2000 status: COMPLETED locationDetails: name: Cafe on Main Street address: 1 Main Street postcode: '2000' countryIsoCode: AUS timezone: Australia/Sydney phoneNumber: '+61212345678' businessDetails: abn: '12345678901' entityName: Cafe Holdings Pty Ltd address: 1 Main Street postcode: '2000' countryIsoCode: AUS integrations: - name: loyalty status: SUCCESS '401': description: When you don't have a valid access token. '403': description: When you don't have the right permissions. '404': description: >- When the provided `onboardingReference` does not exist or does not belong to your partner. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Not found: value: error: >- MerchantOnboardingRequest with onboardingReference abc-123-ref not found post: summary: Submit a decision for a merchant onboarding request description: >- This endpoint allows a loyalty partner to approve or reject a merchant onboarding request. When approving, a `loyaltyProgramId` must be provided. When rejecting, an optional `reason` may be provided. operationId: submit-merchant-onboarding-decision security: - JWT: [] tags: - Onboarding parameters: - $ref: '#/components/parameters/header-bearer-token' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/merchant-onboarding-decision-request' examples: Approve onboarding: value: action: APPROVE loyaltyProgramId: my-loyalty-program-id Reject onboarding: value: action: REJECT reason: Merchant does not meet eligibility criteria. responses: '200': description: The decision has been successfully processed. '400': description: When the provided payload is not valid. content: application/json: schema: type: object properties: error: type: string description: The validation error message. examples: Missing loyaltyProgramId on approve: value: error: loyaltyProgramId is required when action is APPROVE '401': description: When you don't have a valid access token. '403': description: When you don't have the right permissions. '404': description: >- When the provided `onboardingReference` does not exist or does not belong to your partner. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Not found: value: error: >- MerchantOnboardingRequest with onboardingReference abc-123-ref not found '409': description: >- When a decision has already been submitted for this onboarding request. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Already decided: value: error: >- MerchantOnboardingRequest with onboardingReference abc-123-ref has already received a partner decision '422': description: When the provided `loyaltyProgramId` is not recognised. content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Unknown loyaltyProgramId: value: error: loyaltyProgramId 'my-unknown-program' was not found /payments/test: post: operationId: create-test-payment summary: Create a test payment requestBody: content: application/json: schema: $ref: '#/components/schemas/create-test-payment' examples: Create a test payment for a member: value: locationId: tc-testlocation-2000 memberId: some-member-id paymentType: PURCHASE paymentSource: EFTPOS goodsAndServicesAmount: 100 Create a test payment for member with a new card: value: locationId: tc-testlocation-2000 memberId: some-member-id paymentType: PURCHASE paymentSource: EFTPOS goodsAndServicesAmount: 100 useNewCard: true Create a test payment for a non-member: value: locationId: tc-testlocation-2000 memberId: null paymentType: PURCHASE paymentSource: EFTPOS goodsAndServicesAmount: 200 Create a test payment for a returning non-member: value: locationId: tc-testlocation-2000 memberReference: ab6775c4-b446-4cd7-b2b6-d4dae6e9563b paymentType: PURCHASE paymentSource: EFTPOS goodsAndServicesAmount: 300 description: '' responses: '200': description: Created content: application/json: schema: oneOf: - title: Registered Member Payment type: object properties: memberId: type: string description: >- The memberId of the created test payment. This is the same `memberId` value that is passed in. example: some-member-id required: - memberId - title: Non-Member Payment type: object properties: memberReference: type: string description: >- The memberReference of the created test payment. This value can be used to identify returning non-member customers in future test payments. example: ab6775c4-b446-4cd7-b2b6-d4dae6e9563b required: - memberReference '404': description: When you provide a value that we can't reconcile content: application/json: schema: type: object properties: error: type: string description: The error message. examples: Unknown memberId: value: error: 'Failed to find member matching memberId: some-member-id' Unknown locationId: value: error: >- Failed to retrieve caid for the provided locationId: tc-somelocation-2000 description: >- This endpoint is for creating fake payments that can be used to test your integration with our system. After registering a member, payments can be generated for that member by providing the memberId that you specified during registration. If `memberId` is null the payment will utilise a random card number not associated with any member and the response will include a `memberReference` value that can be used to identify this non-member customer in future test payments. security: - JWT: [] parameters: - $ref: '#/components/parameters/header-bearer-token' components: securitySchemes: JWT: type: openIdConnect openIdConnectUrl: https://auth.connect.tyro.com/.well-known/openid-configuration parameters: header-bearer-token: schema: type: string default: Bearer {$$.env.access_token} in: header name: Authorization required: true schemas: register-member-request: properties: origin: type: object properties: memberId: type: string description: Member's Identifier on the app. required: - memberId locationId: type: string description: Tyro Connect's identifier for the location. anyOf: - title: Using paymentId properties: paymentId: type: string description: >- Payment Identifier generated from the payment source. Typically this is listed as the `payRequest.transaction.retrievalReferenceNumber` or as `transaction.receipt` depending on your ecommerce integration type. required: - paymentId - title: Using memberReference properties: memberReference: type: string description: >- The reference provided by the terminal via the QR code sign-up flow. By passing this value back to us here it allows us to more accurately identify the payment instrument(s) used by the customer. required: - memberReference required: - origin - locationId deregister-member-request: type: object title: Request body to deregister a member required: - origin properties: origin: type: object required: - memberId properties: memberId: type: string description: Member's Identifier on the app. money-positive-aud: title: Money Positive Amount type: object properties: amount: type: integer description: >- This is the amount in smallest currency unit. e.g 12520 (in cents) is $125.20 example: 12520 minimum: 0 currency: type: string default: AUD enum: - AUD example: AUD description: This is always AUD required: - amount - currency line-item: type: object title: Line Item description: This object represents a line item within a sale. properties: id: type: string description: >- A unique id representing the item within the overall order, i.e. 2 of the same items will have unique ids. name: type: string category: type: string description: type: string sku: type: string description: >- The Id of the item that is aligned with the Id of the item in the POS. barcode: type: string modifiers: type: array description: >- A list of modifications to be made to the parent item. Each object in this array is a [`Line Item`](#/components/schemas/line-item) items: $ref: '#/components/schemas/line-item' unitPrice: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The single unit price (in cents) including tax but excluding discounts (if any) unitPriceTax: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The single unit amount (in cents) of tax collected by the merchant unitCost: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: The single unit cost (in cents) paid by the merchant unitCostTax: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: The single unit amount (in cents) of tax paid by the merchant discounts: type: array description: >- A list of discounts applied to the line item (this is not a per unit discount). e.g if the line item has a quantity of 3, and each item has a 20 cent discount, you could include one discount of 60 cents in the list, or three 20 cent discounts in the list. items: $ref: '#/components/schemas/money-positive-aud-with-description' sale: title: Sale info description: >- Provides additional information about the sale. Only present when top-level sale type is COMBINATION. Allows a POS to record a sale that contains item/s that are returned or exchanged as part of the sale. type: object properties: type: type: string enum: - SALE - REFUND surcharges: type: array description: >- A list of surcharges applied to the line item (this is not a per unit surcharge). e.g if the line item has a quantity of 5, and each item has a $2 surcharge, you could include one surcharge of $10 in the list, or five $2 surcharges in the list. items: $ref: '#/components/schemas/money-positive-aud-with-description' quantity: type: number minimum: 0 exclusiveMinimum: 0 description: The number of units of this item in the sale. It can be fractional. tax: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The amount (in cents) of tax collected by the merchant for this line item total: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The total (in cents) of this line item after tax, discounts, surcharges, modifiers and rounding have been applied. required: - id - name - sku - unitPrice - unitPriceTax - quantity - tax - total money-positive-aud-with-description: title: Money Positive Amount With Description allOf: - $ref: '#/components/schemas/money-positive-aud' - type: object properties: description: type: string description: A description of what this amount of money represents example: Tuesday Happy Hour Discount loyalty-activity: title: Loyalty Activity object type: object properties: id: type: string description: The Id of the loyalty activitiy in the Tyro Connect system. example: 0f448ac1-862a-4c7b-bdb4-a3b7cdbf6149 locationId: type: string description: The Id of the location as specified by the Tyro Connect system. memberId: type: string description: >- The identifier of the member who is associated with this activity. This value corresponds to the origin.memberId provided during member registration. payment: type: object properties: origin: type: object properties: paymentId: type: string description: >- Payment Identifier generated from the payment source. It refers to the `transaction.receipt` (from Tyro eCommerce APIs) or otherwise referred to as the RRN. paymentSource: type: string enum: - EFTPOS - ONLINE type: type: string enum: - PURCHASE - REFUND - CASHOUT - OPEN_PRE_AUTH - CLOSE_PRE_AUTH - VOID mode: type: string description: >- EFTPOS integration type. It will always be `NOT_APPLICABLE` for `ONLINE` payments. enum: - INTEGRATED - STANDALONE - NOT_APPLICABLE zonedDateTime: type: string format: date-time breakdown: type: object properties: goodsAndServices: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- This is the amount paid by the card holder for their goods and/or services. This amount does not include any tip, surcharge, or cash out. cashout: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- If the cardholder withdrew cash as part of the transaction this value represents how much cash was given to the cardholder. tip: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- If the cardholder left a tip this value represents how much the tip was. surcharge: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- If the cardholder was charged a surcharge this value represents how much the surcharge was. total: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: The total amount that was paid by the cardholder. sale: type: object properties: locationId: type: string description: >- This is the Tyro Connect defined location Id. It is a globally unique identifier that is used to identify a merchants individual site origin: type: object description: >- Identifiers and reference numbers that were generated by the POS. required: - saleId - locationId properties: saleId: type: string description: >- The Id of the sale generated by the POS. This value should allow for partner systems to reconcile this sale with the POS. locationId: type: string description: The Id of the store according to the POS locationName: type: string description: This is the human readable name of the location. source: type: object description: Information about the source of the sale. required: - type properties: type: type: string enum: - DELIVEROO - DOORDASH - GOOGLE - HEYYOU - HUNGRYHUNGRY - MEANDU - MENULOG - MRYUM - ORDERUP - OTHER - POS - UBEREATS description: An enum describing the source type of the sale. other: type: string description: The source of the sale if the source type is OTHER. type: type: string enum: - SALE - REFUND - VOID default: SALE description: An enum describing what kind of sale took place. status: type: string enum: - CLOSED default: CLOSED description: >- An enum describing the status of the sale. In the future the API will support more values for this field. openedZonedDateTime: type: string format: date-time example: '2018-05-02T08:28:13+10:00' description: >- The time the sale was opened on the POS. The format of the date time is the notation as defined by [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6) closedZonedDateTime: type: string description: >- The time the sale was closed on the POS. The format of the date time is the notation as defined by [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339#section-5.6) example: '2018-05-02T08:28:13+10:00' format: date-time customer: type: object properties: id: type: string name: type: string register: type: object description: 'Information about which register in the venue was used ' properties: id: type: string name: type: string staff: type: object description: Details about the staff member who performed the transaction required: - id properties: id: type: string description: >- The id of the staff member in the POS system. Please **do not** put the staff members name here section: type: object description: The section within the venue where the sale took place. properties: id: type: string description: The POS system's Id of the section name: type: string description: >- The readable name of the section. E.g. Front bar, drive through for hospitality or for retail men's clothes, womens shoes etc. table: type: object description: >- Optional information about the table where in the venue the sale took place. properties: number: type: string description: >- The table number or table id. This field accepts alphanumeric characters e.g `MAIN-33` example: MAIN-33 seats: type: integer description: The number of PAX where were seated at the table required: - number bookingId: type: string description: The booking ID defined by Tyro Connect to identify a reservation items: type: array items: $ref: '#/components/schemas/line-item' discounts: type: array items: $ref: '#/components/schemas/money-positive-aud-with-description' surcharges: type: array items: $ref: '#/components/schemas/money-positive-aud-with-description' tax: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The total amount (in cents) of tax collected for this sale by the merchant. payments: type: array items: type: object properties: acquirer: type: object description: >- Details about the financial instituition that processed the payment. This object is only supplied when the `method` is `EFTPOS` properties: name: type: string description: >- The name of the Financial Institution that processed the payment. If it was Tyro Payments who processed the transaction, this value is `TYRO` pattern: ^[A-Z]+$ example: TYRO transactionReference: type: string description: >- A reference number that can be used to look up the transaction in the acquirer's system. terminalId: type: string description: >- The Financial Institution's id of the payment terminal that performed the transaction required: - name - transactionReference - terminalId method: type: string enum: - EFTPOS - CASH - GIFT_CARD - POINTS goodsAndServicesAmount: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The amount (in cents) being paid for the goods and services tipAmount: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: The tip amount added on top of the goods and services cashoutAmount: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The cashout amount requested on top of the goodsAndServicesAmount surchargeAmount: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The surcharge amount (in cents) charged by the merchant to process the payment method required: - method - goodsAndServicesAmount total: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The total (in cents) of this sale. It must calculate to: sum(items[].total) - discounts + surcharges subtotal: allOf: - $ref: '#/components/schemas/money-positive-aud' - description: >- The subtotal (in cents) of this sale. It must calculate to: sum(items[].total) required: - locationId - origin - source - type - openedZonedDateTime - closedZonedDateTime - staff - tax - payments required: - id - locationId - origin - payment loyalty-card: title: Loyalty Card object type: object properties: id: type: string description: The Id of the registered card in the Tyro Connect system. paymentId: type: string description: >- Payment Identifier generated from the payment source. It refers to the `transaction.receipt` (from Tyro eCommerce APIs) or otherwise referred to as the RRN. paymentSource: type: string description: Source of payment. enum: - EFTPOS - ONLINE origin: type: object properties: memberId: type: string description: The identifier of the member who is associated with this card. preAccumulatedReward: type: integer description: >- The pre-accumulated reward amount on the card at the time of registration. If you have opted to represent rewards in AUD, then this value is in cents. deregister-member-card-request: type: object title: Request body to deregister a member's card required: - origin properties: origin: type: object required: - memberId properties: memberId: type: string description: Member's Identifier on the app. create-test-payment: type: object title: Request body to create a test payment anyOf: - title: Test payment for a registered member properties: memberId: type: string description: >- The identifier of the member who should be associated with this payment. This value corresponds to the `origin.memberId` provided during member registration. useNewCard: type: boolean description: >- This will simulate the member registering a new card and will trigger corresponding event NEW_REGISTERED_CARD required: - memberId - title: Test payment for a non-member properties: memberId: type: null example: null required: - memberId - title: Test payment for a returning non-member properties: memberReference: type: string description: >- The identifier of the non-member. This value corresponds to the `memberReference` attribute returned when a test payment was made for a non-member. example: ab6775c4-b446-4cd7-b2b6-d4dae6e9563b required: - memberReference properties: locationId: type: string description: Tyro Connect's identifier for the location. example: tc-testlocation-2000 paymentType: type: string description: The type of payment being made enum: - PURCHASE - REFUND - CASHOUT - OPEN_PRE_AUTH - CLOSE_PRE_AUTH - VOID paymentSource: type: string description: The method used to make the payment enum: - EFTPOS - ONLINE goodsAndServicesAmount: type: number description: The amount paid for goods and services tipAmount: type: number description: The amount paid as part of a tip surchargeAmount: type: number description: The amount paid as part of a surcharge cashoutAmount: type: number description: The amount paid as part of a cash withdrawal required: - locationId - paymentType - paymentSource merchant-onboarding-request-response: type: object title: Merchant onboarding request response description: >- The details of a merchant onboarding request, including location and business details, and the current status of each integration. properties: onboardingId: type: string description: The unique reference identifier for the merchant onboarding request. tcLocationId: type: string description: The Tyro Connect location identifier. status: type: string enum: - IN_PROGRESS - COMPLETED description: The overall status of the onboarding request. locationDetails: type: object description: Details about the merchant location being onboarded. properties: name: type: string description: Name of the merchant location. address: type: string description: Street address of the merchant location. postcode: type: string description: Postal code of the merchant location. countryIsoCode: type: string description: ISO code of the country where the merchant location is situated. timezone: type: string description: Timezone of the merchant location (e.g., "Australia/Sydney"). phoneNumber: type: string description: Contact phone number for the merchant location. businessDetails: type: object description: Details about the merchant's business. properties: abn: type: string description: Australian Business Number (ABN) of the merchant. entityName: type: string description: Registered entity name of the merchant. address: type: string description: Street address of the merchant's business. postcode: type: string description: Postal code of the merchant's business. countryIsoCode: type: string description: >- ISO code of the country where the merchant's business is situated. required: - abn - address - postcode - countryIsoCode integrations: type: array description: The list of integrations and their current onboarding status. items: type: object properties: name: type: string description: The name of the integration (e.g., `loyalty`). status: type: string enum: - PENDING - SUCCESS - REJECTED_BY_PARTNER description: The current status of this integration's onboarding. required: - name - status required: - onboardingId - tcLocationId - status - businessDetails - integrations merchant-onboarding-decision-request: type: object title: Request body to submit a merchant onboarding decision properties: action: type: string enum: - APPROVE - REJECT description: The decision to approve or reject the merchant onboarding request. loyaltyProgramId: type: string description: >- The loyalty program identifier to associate with this merchant. Required when `action` is `APPROVE`. reason: type: string description: >- An optional reason for the rejection. Only applicable when `action` is `REJECT`. required: - action