Not receiving API packages in XCTU

Thanks in advance for any help you may offer.
The goal is to send sensor data from an Arduino-XBee setup to an XBee connected to XCTU.
My XBee’s are communicating in AT to API mode when both connected via XCTU but the breakout to using the Arduino troubles me. Ultimately I would like the controller to receive the data on an Arduino as well and print it to the hardware serial, but as of right now I can’t even receive the packages in XCTU so I’ll get there when I get this sorted out.

I am using XBee S2C with the following configuration:
ID 4410
CE 1
AP 2
BD 9600

ID 4410
CE 0
AP 0
BD 9600
JV 1

Everything else is unchanged.

I might not necessarily need to run the controller in API mode in a 1 to 1 connection but I am planning to expand to many more sensors so I would like for API to work with 1 to 1 anyway. Like I said, with both being connected through XCTU I can send and receive API packages, no problem.

Here is the Arduino Setup:
Arduino Nano,
HC-SR04 Ultrasound Sensor,
XBee Shield,
XBee S2C
Please see the attached pictures for connections. The angle might be deceiving but the Shield’s TX Pin is connected to pin D2 on the Arduino and the Shield’s RX pin to D3.

Here is the code (I copied it from the XBee Arduino Library and made the necessary changes that I thought would make this work):

#include <XBee.h>
#include <SoftwareSerial.h>

// create the XBee object
XBee xbee = XBee();
SoftwareSerial nss(2,3); 

uint8_t payload[] = { 0, 0 };

// SH + SL Address of receiving XBee
XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x41C324D0);
ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload));
ZBTxStatusResponse txStatus = ZBTxStatusResponse();

int trigPin=12;
int echoPin=11;
int pingTravelTime;
int distance; 

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, OUTPUT);

void loop() {   
  // break down 10-bit reading into two bytes and place in payload
  pingTravelTime = pulseIn(echoPin,HIGH);
  distance = (pingTravelTime/2)/29.1;
  payload[0] = distance >> 8 & 0xff;
  payload[1] = distance & 0xff;


  // after sending a tx request, we expect a status response
  // wait up to half second for the status response
  if (xbee.readPacket(500)) {
    // got a response!

    // should be a znet tx status              
    if (xbee.getResponse().getApiId() == ZB_TX_STATUS_RESPONSE) {

      // get the delivery status, the fifth byte
      if (txStatus.getDeliveryStatus() == SUCCESS) {
        // success.  time to celebrate
      } else {
        // the remote XBee did not receive our packet. is it powered on?
        Serial.print("not received");
  } else if (xbee.getResponse().isError()) {
    Serial.print("Error reading packet.  Error code: ");  
  } else {
    // local XBee did not provide a timely TX Status Response -- should not happen
    Serial.print("time out error");


The hardware serial prints the last error code indicating that the XBee did not provide a timely TX Status Response.

If you could point me to the changes I need to make in the code or the XBee setup to receive the packages in XCTU, I would greatly appreciate that!