Payment Note vs Tender Note?

Hi there!

Trying to understand something. This is on Production.

A client processes an order in Square POS (other tender) and attaches a note.

According to the client all locations are on the same version of POS , and they do payments consistently across all locations, meaning they enter the note in the same place during the checkout/payment flow.

When we retrieve payments via API the note comes in two different places. Some payments have a “note” key, some don’t have a “note” key and the note is in
external_details.source"

Can you please advise on why this might be happening? Thank you!

{
  "id": "5axj****",

  "created_at": "2024-10-21T18:47:42.036Z",
  "updated_at": "2024-10-21T18:47:46.469Z",
  
  "status": "COMPLETED",
  "source_type": "EXTERNAL",
  "location_id": "L5RM4BFVFYDMS",
  "order_id": "Rg4JY3g0TsMTlUMp75HANsRJcA9YY",

  "note": "customer note",  <---------- NOTE 

  "external_details": {
    "type": "OTHER",
    "source": "Other Payment Types" 
  },

  "application_details": {
    "square_product": "SQUARE_POS"
  }
}
{
  "id": "xUsdr****",

  "created_at": "2024-10-21T18:46:37.816Z",
  "updated_at": "2024-10-21T18:46:39.004Z",

  "status": "COMPLETED",
  "source_type": "EXTERNAL",
  "location_id": "68FKR0V8TQPWQ",
  "order_id": "muOXI8nhG8B4Jys9pkIGzHzeV",


  "external_details": {
    "type": "OTHER",
    "source": "customer note" <---------- NOTE
  },

  "application_details": {
    "square_product": "SQUARE_POS"
  }
}

I’m checking with the team. I haven’t been able to replicate this. The one difference I noticed was that on device is on iOS 16 and the other is on 17. :slightly_smiling_face:

Thank you Bryan.

The only difference I noticed is that the response with the “note” in root (first example) also has a key “capabilities”, which is not present in the other payment.

 "capabilities": [  
    "EDIT_AMOUNT_UP",
    "EDIT_AMOUNT_DOWN",
    "EDIT_TIP_AMOUNT_UP",
    "EDIT_TIP_AMOUNT_DOWN"
  ]

Otherwise, the payloads are pretty much identical

Wondering if this might be related to the user type logged into the POS?

Looking at the logs from the same device. The difference is the “team_member_id”.

This payment has “capabilities” and “note” in a separate key.

"order_id": "Rg4JY3g0TsMTlUMp75HANsRJcA9YY",
"location_id": "L5RM4BFVFYDMS",
....
"note": "customer note",
"capabilities": [
    "EDIT_AMOUNT_UP",
    "EDIT_AMOUNT_DOWN",
    "EDIT_TIP_AMOUNT_UP",
    "EDIT_TIP_AMOUNT_DOWN"
],
"external_details": {
    "type": "OTHER",
    "source": "Other Payment Types"
},
"receipt_number": "5axj",
"device_details": {
    "device_id": "DEVICE_INSTALLATION_ID:E8ED4C25-0A3F-42B6-98D6-3E6B55C9819A",
    "device_name": "GCJVFNMCHLF9",
    "device_installation_id": "E8ED4C25-0A3F-42B6-98D6-3E6B55C9819A"
},
"team_member_id": "88M77M7CPNBAT",

This payment (from today) has no “note”, no “capabilities”, user note is in “external_details->source”.

"order_id": "4bQvWjuydjEQTwT9JrFAXBmeV",
"location_id": "L5RM4BFVFYDMS",
...
"external_details": {
    "type": "OTHER",
    "source": "customer note" 
},

"receipt_number": "5CDC",
"device_details": {
    "device_id": "DEVICE_INSTALLATION_ID:E8ED4C25-0A3F-42B6-98D6-3E6B55C9819A",
    "device_name": "GCJVFNMCHLF9",
    "device_installation_id": "E8ED4C25-0A3F-42B6-98D6-3E6B55C9819A"
},
"team_member_id": "TMGaiu9PQQbAs3hx",

Hi Bryan? Any update?

I’m almost 100% positive this has to do with logged-in user type/permissions

I’ve tested this with the owner permissions and haven’t been able to replicate top level customer note. Are you able to easily replicate this? :slightly_smiling_face:

Hi Bryan:

They adjusted the permissions of the user that was creating the root-level note and now it comes in external_details.source

from:
“team_member_id”: “88M77M7CPNBAT”
to:
“team_member_id”: “TMGaiu9PQQbAs3hx”,

These IDs look quite different - the original almost looks like a “root-level” object (all caps, and shorter than the new one).

I’m going to ask them to create an order with the original if possible.

Hi Brian,

Getting back to this. I have same employee id logged into POS at 2 different locations, and according to the client they are identical. Payloads however are different :

  • capabilities key is present on one, and not the other
  • note key is present on one and not the other
  • note is passed inside externa_details->source

Can you take a look and help me understand why this is happening? Is there some setting on the location that a client needs to update to keep the payloads consistent or is this related to something else?

Thank you

{
      "id": "vzu....",
      "created_at": "2025-02-19T14:51:50.602Z",
      "updated_at": "2025-02-19T14:51:52.997Z",
      "amount_money": {...
      },
      "status": "COMPLETED",
      "source_type": "EXTERNAL",
      "location_id": "04VC00T87X6B8",
      "order_id": "nIXlcyh87GuvWjUiXPpLd3veV",
      "total_money": {...
      },
      "employee_id": "TMOl-fG37uQCvgmn",
      "external_details": {
        "type": "OTHER",
        "source": "1737"
      },
      "receipt_number": "vzuu",
      "receipt_url": "....",
      "device_details": {
        "device_id": "DEVICE_INSTALLATION_ID:3BBDB37F-235E-45FE-A0A7-F0A21BCD3128",
        "device_name": "DJ39VFP41F",
        "device_installation_id": "3BBDB37F-235E-45FE-A0A7-F0A21BCD3128"
      },
      "team_member_id": "TMOl-fG37uQCvgmn",
      "application_details": {
        "square_product": "SQUARE_POS"
      },
      "version_token": "..."
    }
{
      "id": "xGb...",
      "created_at": "2025-02-19T17:00:33.302Z",
      "updated_at": "2025-02-19T17:00:36.079Z",
      "amount_money": {...
      },
      "status": "COMPLETED",
      "source_type": "EXTERNAL",
      "location_id": "MW2K5VY849ABW",
      "order_id": "le0WIomF7SjlGOLlI4Wb2KFLKQSZY",
      "note": "123456",
      "total_money": {...
      },
      "employee_id": "TMOl-fG37uQCvgmn",
      "capabilities": [
        "EDIT_AMOUNT_UP",
        "EDIT_AMOUNT_DOWN",
        "EDIT_TIP_AMOUNT_UP",
        "EDIT_TIP_AMOUNT_DOWN"
      ],
      "external_details": {
        "type": "OTHER",
        "source": "Other Payment Types"
      },
      "receipt_number": "xGb6",
      "receipt_url": "....",
      "device_details": {
        "device_id": "DEVICE_INSTALLATION_ID:A5401B75-4832-43C2-9DBC-9A06A4DB7525",
        "device_name": "GCGV2EYDHLJJ",
        "device_installation_id": "A5401B75-4832-43C2-9DBC-9A06A4DB7525"
      },
      "team_member_id": "TMOl-fG37uQCvgmn",
      "application_details": {
        "square_product": "SQUARE_POS"
      },
      "version_token": "..."
    }

Currently, since these payments are being handled with our 1st party app there isn’t anything additional that the seller can do at this time. The difference is due to an internal migrations that is out of the sellers control at this time. Till this migration is complete this can happen. Sadly, I don’t have any timeline that I can share on a completion date. :slight_smile:

Hi Brian,

so just to clarify:

  • payloads can be inconsistent due to internal Square migrations
  • neither we (dev) nor merchant can change any settings to ensure consistent payloads until migration is complete (no current ETA)

Yes, that is correct at this time. :slight_smile: